J’aimerais vous présenter la méthode que j’utilise afin de détecter le dernier élément d’un boucle foreach. Pourquoi faire me direz-vous, et bien il est très souvent nécessaire d’effectuer un traitement différent sur le dernier élément d’un tableau au sein d’un foreach et notamment en phase d’intégration.Un exemple tout simple est la génération d’une liste HTML dont les éléments utilisent des séparateurs comme par exemple un « | » dans un menu de navigation, où le dernier élément de la liste ne doit en principe pas afficher de séparateur.
Il existe bien évidemment un méthode empirique consistant à utiliser un itérateur et à le comparer à la taille du tableau, mais nous écarterons cette méthode gourmande et qui fait perdre tout son sens au foreach par rapport à une boucle for.
Voici donc la méthode que j’utilise pour détecter le dernier élément du tableau, nous l’afficherons simplement dans l’exemple ci-dessous :
//Indexed array $array = array('premier', 'deuxieme', 'troisieme', 'quatrieme', 'dernier'); $last_key = end(array_keys($array)); foreach($array as $k => $v) { if($k === $last_key) { echo $v; } } //Associative array $array = array(); $array['un'] = 'premier'; $array['deux'] = 'deuxieme'; $array['trois'] = 'troisieme'; $array['quatre'] = 'quatrieme'; $array['cinq'] = 'dernier'; $last_key = end(array_keys($array)); foreach($array as $k => $v) { if($k === $last_key) { echo $v; } }
Si vous pensez avoir une meilleure méthode, n’hésitez pas à la partager ici !
Cependant comment détecter le dernier attribut d’un objet utilisé dans une boucle foreach ?