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();
}
Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top