Maison  >  Article  >  développement back-end  >  Comprenez-vous vraiment PHP foreach ? Exemples d'utilisation très clairs

Comprenez-vous vraiment PHP foreach ? Exemples d'utilisation très clairs

西门大官人
西门大官人original
2018-07-13 14:48:392005parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn