IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Obtenir la référence du dernier élément d'un tableau associatif.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Par défaut Obtenir la référence du dernier élément d'un tableau associatif.
    Bonjour a tous,

    Je veux le code le plus court possible pour obtenir la référence (pour modification ou suppression, donc pas une copie) du dernier élément d'un tableau associatif.

    Je tombe sur du code que je trouve lourd !

    Voici les possibilités que j'ai trouvé :

    1) Utilisation du (dangereux) COUNT-1

    Tout dabord, cette solution m'impose l'utilisation d'un tableau indexé.. et la gestion des index qui va avec (voir ci-après).

    Le classique count-1 est très dangereux en PHP tel quel car si on supprime un élément d'un tableau, php ne réindexe pas les élément :
    Par exemple, si on retire l'élément 2 de 0,1,2,3
    la liste des index du tableau va devenir 0,1,3.

    Conséquence si l'on cherche a atteindre le dernier élément via (pourtant très classique), tab[count-1], php va tenter de retourner tab[2].. qui n'existe plus.

    Bien sur on peut réindexer tout le tableau à chaque suppression via un array_values, mais c'est une opération supplémentaire que l'on m'impose sur ce tableau.. .. qui au départ était simplement associatif et que je dois maintenant indexer.. ..et réindexer à chaque suppression... Tout ca juste pour obtenir le dernier élément d'un tableau en écriture!

    On tombe dans une lourdeur qui est le sujet de ce POST.

    2) Le END()

    end() déplace le pointeur interne du tableau array jusqu'au dernier élément et retourne sa valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     
    $fruits = array('apple', 'banana', 'cranberry');
    echo end($fruits); // cranberry
     
    ?>
    sauf que je veux pouvoir modifier, ou supprimer 'cranberry'..

    3) Le "array_pop"

    Retourne la dernière valeur du tableau array ... mais le supprime du tableau.

    Ca ne marche pas si je veux simplement modifier la valeur du dernier élément.

    4) Les boucles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $derniere_cle=null;
    foreach ($a as $k => $v) {
       echo "\$a[$k] => $v.\n";
       $derniere_cle=$k;
     
    }
     
    $a[$derniere_cle]="...";
    Oui.. juste pour obtenir le dernier élément d'un tableau (en écriture).. c'est ultra-lourd.


    Quelqu'un connait un code plus court ?

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    le end() déplace le curseur du tableau.
    Si ensuite tu fais un key($array), tu devrais récupérer l'index de la dernière valeur... et donc pouvoir la modifier.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Par défaut
    en somme je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    end($tab);
    $tab[key($tab)]="je modifie";
    unset($tab[key($tab)]); // ou je supprime
    Merci, je vais tester.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VxiR2] Précédent et dernier élément d'un tableau
    Par thorgal1612 dans le forum Webi
    Réponses: 11
    Dernier message: 18/03/2013, 10h15
  2. Lecture et affichage du dernier élément d'un tableau
    Par wajdi ben hssine dans le forum LabVIEW
    Réponses: 1
    Dernier message: 07/07/2010, 20h50
  3. Dernier élément d'un tableau
    Par chicabonux dans le forum Débuter
    Réponses: 5
    Dernier message: 21/09/2009, 15h10
  4. [Smarty] dernier élément d'un tableau
    Par wkd dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 05/10/2006, 13h07
  5. Réponses: 7
    Dernier message: 21/08/2006, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo