Pourquoi une itération sur ArrayIterator se terminant avec la boucle sans fin?
-
13-12-2019 - |
Question
Tableau dans mon code est assez grand donc je le coller dans pastebin. http://pastebin.com/6tviT2Xj
Je ne comprends pas pourquoi je reçois boucle sans fin
La logique de ce script:
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
La solution
Parce que vous ne vous déplacez jamais dans votre itérateur ( avec arayité :: Suivant () ).
while ($it->valid()) {
...
$it->next();
}
Autres conseils
vous devez utiliser $it->next();
sinon, vous recevrez cicle au cours de la même clé éternellement
Vous êtes itération sur l'élément actuel, vous devez faire $it->next();
en point / aller à l'élément suivant
Le problème principal n'est pas à l'aide de $it->next();
dans votre, mais qui sont encore nombreuses à ne pas vous donner le résultat désiré, parce que Si vous exécutez print $it->current();
il ne serait de retour Array
puisque vous ne pouvez pas le tableau de sortie de l'information avec print
.
Vous devriez être en utilisant RecursiveArrayIterator
et RecursiveIteratorIterator
puisque vous faites affaire avec un tableau multidimensionnel
Pour obtenir toutes les valeurs essayer :
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "\n";
}
Voir la démo : http://codepad.viper-7.com/UqF18q