我的代码中的数组很大,所以我把它粘贴在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
输出数组信息。
您应该使用RecursiveArrayIterator
和RecursiveIteratorIterator
,因为您正在处理多维数组
要获取所有值,请尝试:
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "n";
}
查看完整演示:http://codepad.viper-7.com/UqF18q