Dans le développement quotidien, utiliser le foreach de PHP pour parcourir les tableaux est presque standard. Il peut très facilement parcourir les clés et les valeurs du tableau. Mais comprenez-vous vraiment sa personnalité ?
Comment utiliser PHP foreach ?
Le site Web chinois php suivant utilise des exemples pour expliquer l'utilisation et les précautions de PHP foreach.
Par exemple : Il existe le tableau suivant :
$array = array(1,2,3,4,5);
Nécessite que la valeur de chaque élément du tableau $array soit augmentée de 1
Habituellement , nous pouvons utiliser les méthodes de traitement suivantes, première méthode :
foreach($array as $key => $value){ $array[$key] = $value+1; }
Vous pouvez également utiliser la méthode suivante, deuxième méthode :
foreach($array as &$value){ $value = $value+1; }
Dans des circonstances normales, ces deux méthodes d'écriture seront ne pose aucun problème. Les résultats sont les mêmes. Mais lorsque nous devrons utiliser $value dans le prochain programme, par exemple en attribuant une nouvelle valeur de 8 à $value, les résultats de la méthode 2 changeront étrangement.
foreach($array as &$value){ $value = $value+1; } $value = 8;
Lors de l'impression de print_r($array), nous espérons afficher
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 );
mais il affichera en réalité :
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 8 ),
En d'autres termes, enfin Un élément devient 8.
Pourquoi cela se produit-il ?
En fait, $value dans la méthode 2 est une référence, et elle est globale Lorsque foreach est exécuté, la référence à $value est toujours valide, ce qui entraînera toute référence à $value en dehors. foreach. Les modifications affecteront le dernier élément de $array.
Alors comment résoudre ce problème ?
La méthode est très simple Puisque $value est toujours valide en dehors de foreach, nous pouvons supprimer $value une fois l'exécution de foreach terminée. Le code amélioré est le suivant :
foreach($array as &$value){ $value = $value+1; } Unset($value); $value = 8;
Maintenant, le programme affiche le dernier élément de $array comme 6, qui n'est plus affecté par la modification de $value.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!