W3docs

Comprendre la fonction array end() de PHP

Découvrez la fonction end() de PHP : syntaxe, comportement du pointeur interne, pièges courants avec les arrays vides et associatifs.

En PHP, les arrays font partie des types de données les plus couramment utilisés. Ils permettent de stocker une collection de données dans une seule variable, que l'on peut manipuler et parcourir facilement. L'une des fonctions disponibles pour manipuler les arrays est la fonction end().

Dans son utilisation la plus simple, la fonction end() renvoie la dernière valeur d'un array. En interne, elle déplace également le pointeur interne de l'array vers le dernier élément — c'est le détail que la plupart des gens négligent. Dans cet article, nous allons aborder la syntaxe de la fonction end(), son fonctionnement en pratique, son interaction avec le pointeur interne, ainsi que les pièges les plus courants — arrays vides et arrays associatifs — qui font trébucher les développeurs.

Syntaxe

La syntaxe de la fonction end() est simple :

end(array &$array): mixed

$array est l'array dont on veut retourner le dernier élément. Deux points méritent d'être soulignés :

  • L'array est passé par référence (&$array) car end() modifie le pointeur interne de l'array. En conséquence, vous devez passer une vraie variable, pas une expression inline comme end([1, 2, 3]) — cela génère une notice dans les anciennes versions de PHP et une erreur fatale en PHP 8.1+.
  • Le type de retour est mixed : la fonction renvoie la valeur du dernier élément, ou false si l'array est vide.

Utilisation

Voyons de plus près comment la fonction end() fonctionne en pratique. Considérons l'array suivant :

Un array PHP

$fruits = array('apple', 'banana', 'cherry');

Pour récupérer le dernier élément de cet array avec end(), on utilise le code suivant :

php— editable, runs on the server

Après l'exécution de ce code, $last_fruit contiendrait la chaîne 'cherry'.

Modifier le pointeur de l'array

Chaque array PHP maintient un pointeur interne qui suit une position « courante ». Appeler end() déplace ce pointeur vers le dernier élément. Les autres fonctions de pointeur le déplacent également : reset() revient au premier élément, next() avance d'un pas, prev() recule d'un pas, et current() lit l'élément sur lequel se trouve le pointeur sans le déplacer.

Comme end() laisse le pointeur sur le dernier élément, appeler current() juste après retourne cette même dernière valeur :

<?php

$fruits = ['apple', 'banana', 'cherry'];

end($fruits);
echo current($fruits);

Ce code affichera le résultat suivant :

cherry

Si vous devez parcourir un array dans l'ordre inverse, n'essayez pas de le faire en appelant end() à répétition — le pointeur ne se déplace jamais au-delà du dernier élément, donc une boucle pilotée par end() ne se terminerait jamais. Utilisez plutôt array_reverse() (ou une boucle for indexée standard qui décompte depuis count($array) - 1) :

<?php

$fruits = ['apple', 'banana', 'cherry'];

foreach (array_reverse($fruits) as $fruit) {
    echo $fruit . "<br>";
}

Ce code affichera le résultat suivant :

cherry
banana
apple

Pièges courants

Il existe quelques pièges courants à connaître lors de l'utilisation de la fonction end() :

Arrays vides

Si l'array passé à end() est vide, la fonction renvoie false. Cela est ambigu : false peut également être une valeur légitime que pourrait contenir un array non vide, donc une vérification superficielle peut donner un résultat erroné.

php— editable, runs on the server

Pour plus de sécurité, vérifiez d'abord si l'array est vide (avec empty() ou count()), ou utilisez la comparaison stricte !== false :

php— editable, runs on the server

Arrays associatifs

La fonction end() renvoie toujours la valeur du dernier élément, que l'array soit indexé ou associatif :

php— editable, runs on the server

Si vous devez récupérer la dernière clé d'un array associatif, utilisez plutôt la fonction array_key_last() :

php— editable, runs on the server

end() vs array_pop()

Un point de confusion courant concerne la différence entre end() et array_pop(). Les deux donnent accès au dernier élément, mais :

  • end() lit la dernière valeur et laisse l'array intact (il déplace uniquement le pointeur interne).
  • array_pop() supprime le dernier élément et le retourne, réduisant la taille de l'array d'un élément.

Utilisez end() lorsque vous souhaitez simplement consulter la dernière valeur ; utilisez array_pop() lorsque vous souhaitez réellement la retirer de l'array.

Fonctions associées

La fonction end() fait partie de la famille des fonctions de pointeur interne de PHP. Ces chapitres couvrent le reste :

  • reset() — déplace le pointeur vers le premier élément et le retourne.
  • current() — lit l'élément à la position actuelle du pointeur.
  • next() — avance le pointeur et retourne l'élément suivant.
  • prev() — recule le pointeur et retourne l'élément précédent.
  • array_reverse() — obtient une copie inversée de l'array pour un parcours inversé propre.
  • array_pop() — supprime et retourne le dernier élément.

Conclusion

Dans cet article, nous avons examiné en détail la fonction end() en PHP, notamment sa syntaxe, son utilisation et ses pièges courants. Bien qu'elle puisse sembler être une fonction simple, il existe des nuances importantes à connaître lors de son utilisation. En comprenant le fonctionnement de end(), vous pouvez éviter les erreurs courantes et utiliser cette fonction à son plein potentiel dans votre code PHP.

Diagramme

Voici un diagramme illustrant l'utilisation de la fonction end() :

graph TD
A[Array] --> B(end())
B --> C{Check result}
C --> |True| D(Return last element)
C --> |False| E(Handle empty array)

Pratique

Pratique
Quel est le rôle de la fonction end() en PHP ?
Quel est le rôle de la fonction end() en PHP ?
Was this page helpful?