Vous vous demandez quelle serait la bonne méthode pour obtenir la première itération sur une boucle foreach. Je veux faire quelque chose de différent à la première itération.
Une condition est-elle notre meilleure option dans ces cas?
Oui, si vous ne pouvez pas parcourir l'objet d'une manière différente (une boucle for for normale), utilisez simplement une condition dans ce cas
$first = true;
foreach ( $obj as $value )
{
if ( $first )
{
// do something
$first = false;
}
else
{
// do something
}
// do something
}
Encore plus élégant:
foreach($array as $index => $value) {
if ($index == 0) {
echo $array[$index];
}
}
Cet exemple ne fonctionne que si vous utilisez le tableau intégré de PHP, ajoutez des fonctionnalités/fonction ou spécifiez manuellement les clés dans l'ordre numérique approprié.
Voici une approche qui ne ressemble pas aux autres solutions énumérées ici et qui devrait fonctionner via l’ordre naturel de tout tableau PHP.
$first = array_shift($array);
//do stuff with $first
foreach($array as $elem) {
//do stuff with rest of array elements
}
array_unshift($array, $first); //return first element to top
Vous pouvez simplement ajouter un compteur au début, comme suit:
$i = 0;
foreach($arr as $a){
if($i == 0) {
//do ze business
}
//the rest
$i++;
}
J'ai vu cette solution sur un blog post dans mon ensemble de résultats de recherche qui l'a amené à apparaître et je l'ai trouvée plutôt élégante. Bien que peut-être un peu lourd sur le traitement.
foreach ($array as $element)
{
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
Notez qu'il y a aussi un avertissement sur le post que cela ne fonctionnera que si les valeurs du tableau sont uniques. Si votre dernier élément est "world" et qu'un élément aléatoire au milieu est également "world", le dernier élément sera exécuté deux fois.
first = true
foreach(...)
if first
do stuff
first = false
hm
<?php
$i = 0;
foreach($ar as $sth) {
if($i++ == 0) {
// do something
}
// do something else
}
plus élégant.
Cela fonctionne aussi
foreach($array as $element) {
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}
foreach($array as $element) {
if ($element === reset($array))
echo 'FIRST ELEMENT!';
if ($element === end($array))
echo 'LAST ELEMENT!';
}