Por que iterando ArrayIterator terminando com loop infinito?
-
13-12-2019 - |
Pergunta
Matriz em meu código é muito grande, então eu colá-lo no pastebin. http://pastebin.com/6tviT2Xj
Eu não entendo por que estou recebendo um loop infinito
A lógica deste script é:
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
Solução
Porque você nunca mudar, você iterador (com ArrayIterator::next()).
while ($it->valid()) {
...
$it->next();
}
Outras dicas
você deve usar $it->next();
outra coisa que você vai ciclo sobre a mesma chave eternamente
você está iterando atual do elemento, o que você precisa fazer $it->next();
a ponto de ir para o próximo elemento
O principal problema não está usando $it->next();
no seu, mas que ainda muitos não dão o resultado desejado, porque Se você correr print $it->current();
ele só iria voltar Array
desde que você não pode matriz de saída de informações com print
.
Você deve estar usando RecursiveArrayIterator
e RecursiveIteratorIterator
pois você está lidando com matriz multidimensional
Para obter todos os valores tentar :
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "\n";
}
Veja a demonstração : http://codepad.viper-7.com/UqF18q