Comment arrivez-vous à concilier deux boucles foreach dans un
Le langage PHP. J'ai un foreach ( $a, $b) et un autre foreach ($c $d => $e). Comment puis-je combiner pour lire que un. J'ai fatigué foreach (($a, $b) && ($c $d => $e)), mais c'est de la foutaise.
//ArrayIterator is just an example, could be any Iterator.
$a1 =newArrayIterator(array(1,2,3,4,5,6));
$a2 =newArrayIterator(array(11,12,13,14,15,16));
$it =newMultipleIterator;
$it->attachIterator($a1);
$it->attachIterator($a2);foreach($it as $e){
echo $e[0],' | ', $e[1],"\n";}
imprime
1|112|123|134|145|156|16
C'est le plus intéressant de la paix de code que j'ai vu aujourd'hui. Plus un pour que. Ne les tableaux doivent être de longueur égale, ou voulez-vous arrêter l'itération sur l'un d'entre eux à un certain point? Cela dépend si vous définissez la MultipleIterator::MIT_NEED_ANY ou MultipleIterator::MIT_NEED_ALL drapeau. Avec MIT_NEED_ALL l'itération s'arrête si une de l'intérieur de la itérateurs n'a pas plus d'éléments. Avec MIT_NEED_ANY l'itérateur continue aussi longtemps qu'au moins un itérateur interne a un autre élément, tous les autres éléments sont NULS. MIT_NEED_ALL est la valeur par défaut. Merci pour l'info, très cool! Merci pour la présentation de ce SPL fonction! Plus un! Viens de tomber sur ce - Regarde comme c'est pour PHP 5.3.0+. Je suis en cours d'exécution 5.2.17, est-il une alternative pour que la version de PHP?
Cela va faire ce que tu veux je pense. Il sera l'avance les deux tableaux également en même temps tout au long de votre boucle. Vous pouvez toujours break manuellement si $c est d'une taille différente de celle de $a et vous avez besoin de casser la logique basée sur la taille de la matrice:
foreach($a as $b){
list($d,$e)= each($c);//continue on with $b, $d and $e all set}
each() feront avancer le pointeur sur le tableau de $c à chaque itération.
Vous pourriez être intéressé par La SPL MultipleIterator
par exemple
imprime
Cela dépend si vous définissez la MultipleIterator::MIT_NEED_ANY ou MultipleIterator::MIT_NEED_ALL drapeau. Avec MIT_NEED_ALL l'itération s'arrête si une de l'intérieur de la itérateurs n'a pas plus d'éléments. Avec MIT_NEED_ANY l'itérateur continue aussi longtemps qu'au moins un itérateur interne a un autre élément, tous les autres éléments sont NULS. MIT_NEED_ALL est la valeur par défaut.
Merci pour l'info, très cool!
Merci pour la présentation de ce SPL fonction! Plus un!
Viens de tomber sur ce - Regarde comme c'est pour PHP 5.3.0+. Je suis en cours d'exécution 5.2.17, est-il une alternative pour que la version de PHP?
OriginalL'auteur VolkerK
1) Première méthode
ou 2) Deuxième méthode
OriginalL'auteur T.Todua
Je ne comprends pas ce que vous essayez de faire. Si vous souhaitez rejoindre l'un après l'autre, simplement utiliser deux boucles:
Si vous voulez toutes les combinaisons de
$a
et$c
:Je suppose que vous pourriez faire quelque chose comme:
mais je n'aurais pas forcément le conseiller.
OriginalL'auteur cletus
Cela va faire ce que tu veux je pense. Il sera l'avance les deux tableaux également en même temps tout au long de votre boucle. Vous pouvez toujours
break
manuellement si$c
est d'une taille différente de celle de$a
et vous avez besoin de casser la logique basée sur la taille de la matrice:each()
feront avancer le pointeur sur le tableau de$c
à chaque itération.OriginalL'auteur zombat