Por qué iterando sobre el objeto de la clase arrayiterator terminando con bucle sin fin?
-
13-12-2019 - |
Pregunta
Matriz en mi código es bastante grande, así que me pega en pastebin. http://pastebin.com/6tviT2Xj
No entiendo por qué estoy recibiendo bucle sin fin
La lógica de esta secuencia de comandos es:
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
Solución
porque nunca se mueve en su iterador ( con arrayiterator :: Siguiente () ).
while ($it->valid()) {
...
$it->next();
}
Otros consejos
usted debe utilizar $it->next();
de lo contrario va a bajar más la misma clave eternamente
usted está iterando sobre el elemento actual, usted necesita hacer $it->next();
a punto de/ir al siguiente elemento
El principal problema no es el uso de $it->next();
en su pero que todavía muchos no dan el resultado deseado, porque Si ejecuta print $it->current();
lo único que haría sería volver Array
ya que usted no puede matriz de salida de información con print
.
Usted debe estar utilizando RecursiveArrayIterator
y RecursiveIteratorIterator
ya que se trata de una matriz multidimensional
Para obtener todos los valores de probar :
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "\n";
}
Ver demostración completa : http://codepad.viper-7.com/UqF18q