为什么在ArrayIdeator上迭代以无休止的循环结束



我的代码中的数组很大,所以我把它粘贴在pastebin中。http://pastebin.com/6tviT2Xj

我不明白为什么我得到无休止的循环

这个脚本的逻辑是:

$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}

因为您永远不会在迭代器中移动(使用ArrayTerator::next())。

while ($it->valid()) {
...
$it->next();
}

您应该使用$it->next();,否则您将永远遍历同一个密钥

如果在当前元素上迭代,则需要执行$it->next();以指向/转到下一个元素

主要问题不是在您的中使用$it->next();,但仍然有很多问题不能给您所需的输出,因为如果您运行print $it->current();,它只会返回Array,因为您不能用print输出数组信息。

您应该使用RecursiveArrayIteratorRecursiveIteratorIterator,因为您正在处理多维数组

要获取所有值,请尝试:

$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "n";
}

查看完整演示:http://codepad.viper-7.com/UqF18q

最新更新