Maison > développement back-end > tutoriel php > Comment le passage par référence de PHP dans les boucles « foreach » affecte-t-il la modification des éléments du tableau ?

Comment le passage par référence de PHP dans les boucles « foreach » affecte-t-il la modification des éléments du tableau ?

Barbara Streisand
Libérer: 2024-12-17 12:42:25
original
771 Les gens l'ont consulté

How Does PHP's Pass by Reference in `foreach` Loops Affect Array Element Modification?

PHP Pass by Reference dans foreach

Comprendre Pass by Reference

PHP a deux variables types : variables normales et variables de référence. L'attribution d'une référence d'une variable à une autre variable crée une variable de référence. La variable devient un alias pour la variable référencée.

Passage par référence dans les boucles Foreach

Dans une boucle foreach, la syntaxe foreach ($a as &$v) transmet une référence à chaque élément du tableau à la variable $v. Cela signifie que toute modification apportée à $v à l'intérieur de la boucle modifiera également l'élément du tableau d'origine.

Explication de l'extrait de code

$a = array ('zero','one','two', 'three');

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.PHP_EOL;
}
Copier après la connexion

Dans ce code :

  1. Le tableau $a contient quatre éléments : "zéro", "un", "deux" et 'trois'.
  2. La première boucle foreach parcourt chaque élément et transmet une référence à chaque élément à $v.
  3. Aucune modification n'est apportée à $v dans cette boucle, donc les éléments du tableau restent inchangés.
  4. La deuxième boucle foreach parcourt à nouveau chaque élément, mais cette fois, une variable normale $v contient la valeur de chaque élément. element.
  5. La sortie sera :
zero
one
two
two
Copier après la connexion

Raison de la sortie

Après la première boucle foreach, l'élément $ a[3] devient une variable de référence puisqu'elle est référencée par $v. Par conséquent, lorsqu'une nouvelle valeur est attribuée à $v dans les itérations suivantes, $a[3] est également modifié.

Puisque $a[3] est désormais une variable de référence, changeant sa valeur dans la deuxième boucle foreach affecte toutes les autres itérations de la boucle. Par conséquent, la dernière itération imprime « deux » au lieu de « trois ».

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal