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

西门大官人
Libérer: 2023-04-03 07:14:02
original
1999 Les gens l'ont consulté

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);
Copier après la connexion

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;
}
Copier après la connexion

Vous pouvez également utiliser la méthode suivante, deuxième méthode :

foreach($array as &$value){
    $value = $value+1;
}
Copier après la connexion

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;
Copier après la connexion

Lors de l'impression de print_r($array), nous espérons afficher

Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 );
Copier après la connexion

mais il affichera en réalité :

Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 8 ),
Copier après la connexion

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;
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!