Je suis nouveau à PHP. J'ai deux tableaux et p> mais maintenant J'aimerais parcourir les deux tableaux en même temps afin d'avoir accès aux deux Comment puis-je faire ça? P> P> $ array1 code> et $ array2 code> de la taille égale. J'utilise foreach code> des boucles à itérer via des tableaux comme suit: $ Element1 code> et $ element2 code> dans le corps de la boucle. P>
5 Réponses :
Utilisez A pour boucle à la place ...
for($i = 0;$i<count($array1);$i++) {
/* access $array1[$i] and $array2[$i] here */
}
Ne fonctionne que pour les tableaux numériques.
Ce n'est pas foreach b> Question Puis-je itération à travers deux boucles de taille égale avec pour usure? code> mais oui, cela fonctionne pour les nums sous forme de clés :)
@ Wh1T3H4CK5, il y a plus de façons d'itération sur un tableau en PHP que pour cuire un chat. Tous peuvent i> appropriés dans une circonstance donnée.
Qu'en est-il de
$i = 0;
foreach($array1 as $element) {
// Do stuff with the element
$stuff_from_this_array = $element;
$stuff_from_other_array = $array2[$i];
$i++;
}
Cela rompt lorsque le tableau ne dispose pas de clés séquentielles numériques.
foreach (array_combine(array_values($array1), array_values($array2)) as $element1 => $element2) {
// Do something
}
Le truc code> Suivant code> fonctionnera aussi longtemps qu'il n'y a pas de faux false code> s dans la première matrice.
Oui, je sais, mais je n'ai pas trouvé de solution (pas si complexe) pour cela. Cependant, j'ai ajouté deux autres façons et au moins une convient :) Le troisième se sent assez gentil avec moi, mais cela a également ses limites.
chacun renvoie un tableau contenant la clé et la valeur et avance le pointeur à l'élément suivant. Il retourne false une fois qu'il a passé avancé après le dernier élément.
// Iterate until one of the arrays is complete
while (($a = each($array_a)) !== false && ($b = each($array_b)) !== false) {
echo "The key:value from array_a is {$a['key']}:{$a['value']}.\n";
echo "The key:value from array_b is {$b['key']}:{$b['value']}.\n";
}
... Je n'ai même pas su que je pouvais faire ça! INCROYABLE!!!
C'est une solution possible. Si vous commencez par suivant () directement, vous n'obtenez jamais le premier élément de la matrice.
reset($array1); reset($array2);
for ($element1 = current($array1), $element2 = current($array2);
$element1 !== false && $element2 !== false;
$element1 = next($array1), $element2 = next($array2)) {
// Do something
}
Les Keys i> dans le premier tableau identique à ceux de la seconde? Ce détail dictera la réponse.
Excellent, cela rend cela facile.