Perché intitolando l'Arrayiteratore che termina con loop infinito?
-
13-12-2019 - |
Domanda
Array nel mio codice è abbastanza grande, quindi lo sto incollando in Pastebin. http://pastebin.com/6tvit2xj
Non capisco perché sto ottenendo loop infinito
Logica di questo script è:
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
. Soluzione
Perché non ti muovi mai in te Iteratore ( con Arrayiterator :: Avanti () ).
while ($it->valid()) {
...
$it->next();
}
. Altri suggerimenti
Dovresti usare $it->next();
Qualche parte di cui sarai la stessa chiave eternamente
Stai superando l'elemento corrente, è necessario eseguire $it->next();
a punto / andare all'elemento successivo
Il problema principale non utilizza $it->next();
nel tuo ma che ancora molti non ti danno l'output desiderato perché se si esegue print $it->current();
restituire solo Array
poiché non è possibile emettere informazioni di array con print
.
Dovresti usare RecursiveArrayIterator
e RecursiveIteratorIterator
poiché si tratta di array multidimensionale
Per ottenere tutti i valori prova:
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "\n";
}
.
Vedi la demo full: http://codepad.viper-7.com/uqf18q .