&$value){//Loop body instruction block;}"."/> &$value){//Loop body instruction block;}".">
Maison > Article > développement back-end > Comment modifier le tableau d'origine en php dans la boucle foreach
En PHP, vous n'avez besoin que de l'instruction foreach pour utiliser une boucle de référence, puis utiliser (modifier) le tableau d'origine dans le corps de la boucle affectera le tableau d'origine lui-même ; la syntaxe "foreach ($array as &$value){/ / Bloc d'instructions du corps de boucle ;}" ou "foreach ($array as $key => &$value){//Bloc d'instructions du corps de boucle ;}".
L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur DELL G3
foreach est une instruction spécialement conçue pour parcourir des tableaux. C'est une méthode couramment utilisée pour parcourir des tableaux. Elle fournit beaucoup. d'aide pour parcourir les tableaux. Très pratique ; après PHP5, vous pouvez également parcourir des objets (foreach ne peut être appliqué qu'aux tableaux et aux objets).
L'instruction foreach parcourt le tableau quel que soit l'indice du tableau et peut être utilisée pour les tableaux d'index discontinus et les tableaux associatifs avec des chaînes comme indices. L'instruction
foreach a deux formats de syntaxe :
Format de grammaire 1 :
foreach ($array as $value){ //循环体语句块; }
Parcourez le tableau $array donné et attribuez la valeur du tableau actuel à $value dans chaque boucle.
Format de syntaxe 2 :
foreach ($array as $key => $value){ //循环体语句块; }
Parcourez le tableau $array donné, et dans chaque boucle, la valeur du tableau actuel est affectée à $value et le nom de la clé est attribué à $key.
Explication :
Pour chaque instruction, le pointeur à l'intérieur du tableau avancera d'un pas, de sorte que l'élément suivant du tableau soit obtenu dans la boucle suivante jusqu'à ce que la fin du tableau soit parcourue, le parcours s'arrête et le la boucle se termine.
Modifiez le tableau d'origine dans la boucle foreach
Généralement, lorsque vous utilisez l'instruction foreach pour parcourir le tableau, elle opère sur la sauvegarde du tableau et n'affecte généralement pas le tableau lui-même.
Par exemple : modifiez le tableau à l'intérieur de la boucle, puis accédez au tableau en dehors de la boucle, vous constaterez que le tableau n'a pas changé
<?php header("Content-type:text/html;charset=utf-8"); $array= array(1,2,3,4,5,); echo "原数组:"; var_dump($array); foreach ($array as $value) { $value = $value*2; // 元素值乘以2 } echo "foreach处理后的数组:"; var_dump($array); ?>
On voit que les deux sorties sont les mêmes, et le les éléments du tableau n'ont pas changé ; pour le moment, dans la boucle foreach, les modifications apportées au tableau d'origine ne sont pas valides.
Mais parfois il est nécessaire de changer le tableau via une boucle foreach, que faut-il faire ?
Vous pouvez utiliser une boucle de référence (c'est-à-dire ajouter &
avant $value
, afin que l'instruction foreach attribue une valeur par référence au lieu de copier une valeur) , puis dans le corps de la boucle, les opérations sur le tableau d'origine affecteront le tableau d'origine lui-même. $value
之前加上 &
,这样foreach语句会以引用赋值而不是拷贝一个值),那么在循环体内对原数组进行操作,就会影响原数组本身。
<?php header("Content-type:text/html;charset=utf-8"); $array= array(1,2,3,4,5,); echo "原数组:"; var_dump($array); foreach ($array as &$value) { $value = $value*2; // 元素值乘以2 } echo "foreach处理后的数组:"; var_dump($array); ?>
可以看出:数组元素发生了变化,元素值都乘以了2。
但最后一个元素前,多了一个&
,这又是怎么了?怎么去除?
这因为数组最后一个元素的 $value
引用在 foreach 循环之后仍会保留。我们需要在输出数组前,使用unset() 来将其销毁。
unset($value); // 最后取消掉引用 var_dump($array)
&
rrreee
&
supplémentaire avant le dernier élément. Qu'est-ce qui ne va pas ? Comment le supprimer ? 🎜🎜Cela est dû au fait que la référence $value
du dernier élément du tableau restera après la boucle foreach. Nous devons utiliser unset() pour détruire le tableau avant de le sortir. 🎜rrreee🎜🎜🎜 Les caractères &
ont disparu ! 🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜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!