J'ai un appel de base de données et j'essaie de comprendre ce que le $key => $value
fait dans une boucle foreach
.
La raison pour laquelle je pose cette question est parce que ces deux codes produisent la même chose. J'essaie donc de comprendre pourquoi il est écrit de cette façon. Voici le code:
foreach($featured as $key => $value){
echo $value['name'];
}
cela produit le même résultat que:
foreach($featured as $value) {
echo $value['name']
}
Ma question est donc la suivante: quelle est la différence entre $key => $value
ou juste $value
dans la boucle foreach
. Le tableau est multidimensionnel si cela fait une différence, je veux juste savoir pourquoi passer $key
à $value
dans la boucle foreach
.
Eh bien, le $key => $value
Dans la boucle foreach fait référence aux paires clé-valeur dans les tableaux associatifs, où la clé sert d'index pour déterminer la valeur au lieu d'un nombre comme 0,1,2, ... In PHP, les tableaux associatifs ressemblent à ceci:
$featured = array('key1' => 'value1', 'key2' => 'value2', etc.);
Dans le code PHP: $featured
Est le tableau associatif en boucle, et as $key => $value
Signifie que chaque fois que la boucle s'exécute et sélectionne une paire clé-valeur le tableau, il stocke la clé dans la variable locale $key
à utiliser dans le bloc de boucle et la valeur dans la variable locale $value
. Ainsi, pour notre exemple de tableau ci-dessus, la boucle foreach atteindrait le La première paire clé-valeur, et si vous spécifiez as $key => $value
, il stockera 'key1'
dans la variable $key
et 'value1'
dans le $value
variable.
Puisque vous n'utilisez pas la variable $key
Dans votre bloc de boucle, l'ajouter ou la supprimer ne modifie pas la sortie de la boucle, mais il est préférable d'inclure la paire clé-valeur pour montrer qu'il s'agit d'une variable associative. tableau.
Notez également que la désignation as $key => $value
Est arbitraire. Vous pouvez remplacer cela par as $foo => $bar
Et cela fonctionnerait bien si vous modifiiez les références de variable à l'intérieur du bloc de boucle par les nouvelles variables, $foo
Et $bar
. Mais leur fabrication $key
Et $value
Permet de garder une trace de ce qu’ils signifient.
Disons que vous avez un tableau associatif comme ceci:
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => array('x'=>123)
);
Dans la première itération: $key="one"
Et $value=1
.
Parfois, vous avez besoin de cette clé. Si vous ne voulez que la valeur, vous pouvez éviter de l'utiliser.
Dans la dernière itération: $key='seventeen'
Et $value = array('x'=>123)
donc pour obtenir la valeur du premier élément de cette valeur array
, vous avez besoin de key
, x dans cette cas: $value['x'] =123
.
Un endroit très important où il se trouve CHAMPS OBLIGATOIRES pour utiliser le key => value
_ _ _ _ _ _ foreach
loop doit être mentionné. Supposons que vous souhaitiez ajouter un élément new/sub - à un élément existant ( dans une autre clé ) dans l'élément $features
tableau. Vous devriez faire ce qui suit:
foreach($features as $key => $feature) {
$features[$key]['new_key'] = 'new value';
}
Au lieu de cela:
foreach($features as $feature) {
$feature['new_key'] = 'new value';
}
La différence grande est que, dans le premier cas, vous accédez à la sous-valeur du tableau via le tableau principal lui-même avec une clé à l'élément sur lequel pointe actuellement le pointeur du tableau.
Alors que dans la seconde ( qui ne fonctionne pas à cette fin ), vous affectez la sous-valeur du tableau à une variable temporaire $feature
qui n'est pas défini après chaque itération de la boucle.
La différence est que sur le
foreach($featured as $key => $value){
echo $value['name'];
}
vous pouvez manipuler la valeur de chaque $key
de chaque itération à partir de leur paire clé-valeur. Comme @djiango a répondu, si vous ne manipulez pas le $key
De chaque valeur, le résultat de la boucle sera exactement le même que
foreach($featured as $value) {
echo $value['name']
}
Source: Vous pouvez le lire depuis le Documentation PHP :
La première forme boucle sur le tableau donné par array_expression. À chaque itération, la valeur> de l'élément actuel est affectée à $ valeur et le pointeur de tableau interne est avancé de> un (ainsi lors de la prochaine itération, vous regarderez l'élément suivant). *
Le second formulaire assignera en outre la clé de l'élément en cours à la variable $ key à chaque itération.
Si les données que vous manipulez sont, par exemple, des tableaux avec des clés personnalisées, vous pouvez les imprimer à l'écran de la manière suivante:
$array = ("name" => "Paul", "age" => 23);
foreach($featured as $key => $value){
echo $key . "->" . $value;
}
Devrait imprimer:
name->Paul
age->23
Et vous ne pourriez pas faire cela avec un foreach($featured as $value)
avec la même facilité. Considérez donc le format ci-dessus comme un moyen pratique de manipuler les clés en cas de besoin.
À votre santé
Disons que vous avez un tableau comme celui-ci:
$array = (0=>'123',1=>'abc','test'=>'hi there!')
Dans votre boucle foreach, chaque boucle serait:
$key = 0, $value = '123'
$key = 1, $value = 'abc'
$key = 'test', $value = 'hi there!'
C'est idéal pour les moments où vous devez connaître la clé de tableau.
si le tableau ressemble à:
la touche $ contiendra le type (fruit ou légume) pour chaque valeur de tableau (orange, banane ou carotte)
ici $ key contiendra le $ key associé à $ valeur dans $ vedette. La différence est que maintenant vous avez cette clé.
array("thekey"=>array("name"=>"joe"))
ici valeur de $ est
array("name"=>"joe")
$ key est "thekey"