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();
}
Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top