Maison > développement back-end > tutoriel php > Deux utilisations de PHP foreach comme $key => $value

Deux utilisations de PHP foreach comme $key => $value

不言
Libérer: 2023-03-24 09:04:02
original
9779 Les gens l'ont consulté

Cet article présente les deux utilisations de PHP foreach comme $key => $value, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

. 1. Introduction à la syntaxe de foreach

Les versions PHP 4 et supérieures incluent la structure foreach, qui est juste un moyen pratique de parcourir un tableau. foreach ne peut être utilisé qu'avec des tableaux et une erreur se produira lorsque vous tenterez de l'utiliser avec d'autres types de données ou une variable non initialisée. Il existe deux syntaxes, la seconde est une extension utile de la première.

foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement
Copier après la connexion

Le premier format parcourt le tableau array_expression donné. À chaque passage dans la boucle, la valeur de la cellule actuelle est affectée à $value et le pointeur à l'intérieur du tableau est avancé d'un pas (la cellule suivante sera donc obtenue dans la boucle suivante).

Le deuxième format fait la même chose, sauf qu'en plus de la valeur de la cellule courante, la valeur clé sera également affectée à la variable $key dans chaque boucle. Regardez le code suivant :

$arr = array("1"=>"111","2"=>"222","3"=>"333");
foreach($arr as $key=>$value)
{
echo $key."=>".$value."\n";
}
Copier après la connexion
结果如下:
1=>111
2=>222
3=>333
Copier après la connexion

La valeur clé ici peut être comprise comme l'indice du tableau, et l'indice de l'élément du tableau a[2] est 2.

Lorsque foreach commence à s'exécuter, le pointeur à l'intérieur du tableau pointe automatiquement vers le premier élément. Cela signifie qu'il n'est pas nécessaire d'appeler reset() avant la boucle foreach. La boucle while nécessite une réinitialisation. Les deux codes ci-dessous fonctionnent exactement de la même manière.

1. Utiliser la boucle while

$arr = array("one", "two", "three");
reset ($arr);
while (list(, $value) = each ($arr)) {
echo "Value: $value<br>\n";
}
Copier après la connexion

2. Utiliser foreach

foreach ($arr as $value) {
echo "Value: $value<br>\n";
}
Copier après la connexion

De plus, notez que foreach exploite une copie du tableau spécifié, et pas le tableau lui-même. Par conséquent, même avec la construction de each(), le pointeur de tableau d'origine n'a pas changé et la valeur de l'unité du tableau n'a pas été affectée.

foreach ne prend pas en charge la possibilité de supprimer les messages d'erreur à l'aide de "@".

2. Résumé de PHP foreach

1.

Dans des circonstances normales, $arr et $value dans foreach($arr comme $value) sont des copies et ne sont pas affectés par des facteurs externes, c'est-à-dire

$arr = array(0,1,2,3,4,5);
foreach($arr as $value){
$arr = array();
echo $value;
}
Copier après la connexion
结果是:12345
Copier après la connexion

Mais if $ Si arr est une référence, la situation est différente Nous utilisons du code pour illustrer le problème

$arr = array(0,1,2,3,4,5);
$arr = &$arr;
foreach($arr as $value){
$arr = array();
echo $value;
}
Copier après la connexion
结果是: 0
Copier après la connexion
Copier après la connexion
Copier après la connexion

C'est parce que le $arr utilisé dans la boucle pointe plutôt directement vers les données d'origine. que de faire une copie.

Si $value est une référence et $arr n'est pas une référence, le résultat est le même, $value pointe vers les données d'origine au lieu de copier

$arr = array(0,1,2,3,4,5);
foreach($arr as &$value){
$arr = array();
echo $value;
}
Copier après la connexion
结果是: 0
Copier après la connexion
Copier après la connexion
Copier après la connexion

. Il existe une autre façon. La situation est assez particulière, c'est-à-dire que si $arr est défini comme une variable globale, $arr deviendra également une référence

global $arr;
$arr = array(0,1,2,3,4,5);
foreach($arr as $value){
$arr = array();
echo $value;
}
Copier après la connexion
结果是: 0
Copier après la connexion
Copier après la connexion
Copier après la connexion

2 si vous bouclez un tableau deux fois. , vous ne devez pas l'écrire comme ça

foreach($arr as &$value){}
foreach($arr as $value){}
Copier après la connexion

Cela rendra le résultat de la deuxième boucle incorrect (c'est peut-être un bug PHP). Vous pouvez utiliser ce qui suit à la place :

//solution 1
foreach($arr as &$value){}
unset($value);
foreach($arr as $value){}
//solution 2
foreach($arr as &$value){}
foreach($arr as &$value){}
//solution 3
foreach($arr as &$value){}
$arr2 = $arr;
foreach($arr2 as $value){}
Copier après la connexion

Recommandations associées :

Explication détaillée de l'utilisation et exemples de foreach en 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!

É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