私のコードの配列はかなり大きいので、pastebinに貼り付けます。http://pastebin.com/6tviT2Xj
なぜ無限のループが発生するのかわかりません
このスクリプトのロジックは次のとおりです。
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
私のコードの配列はかなり大きいので、pastebinに貼り付けます。http://pastebin.com/6tviT2Xj
なぜ無限のループが発生するのかわかりません
このスクリプトのロジックは次のとおりです。
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
イテレータ内を移動することはないため(ArrayIterator :: next()を使用)。
while ($it->valid()) {
...
$it->next();
}
$it->next();
あなたは永遠に同じ鍵の上にサイクルする他の方法を使うべき です
$it->next();
現在の要素を繰り返し処理している場合は、次の要素をポイント/移動する必要があります
主な問題はで使用$it->next();
していませんが、それでも多くの場合、目的の出力が得られません。これを実行すると、で配列情報を出力できないため、print $it->current();
返されるだけになるためです。Array
print
多次元配列を扱っているので、を使用する必要がRecursiveArrayIterator
ありますRecursiveIteratorIterator
すべての値を取得するには、次のことを試してください。
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "\n";
}
完全なデモを見る:http://codepad.viper-7.com/UqF18q