我的代码中的数组非常大,所以我将它粘贴在pastebin中。 http://pastebin.com/6tviT2Xj
我不明白为什么我会得到无限循环
此脚本的逻辑是:
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
答案 0 :(得分:7)
因为你永远不会进入你的迭代器(with ArrayIterator::next())。
while ($it->valid()) {
...
$it->next();
}
答案 1 :(得分:3)
你应该使用$it->next();
否则你将永远地抄袭同一个键
答案 2 :(得分:2)
你正在迭代当前元素,你需要$it->next();
指向/转到下一个元素
答案 3 :(得分:1)
主要问题是你没有使用$it->next();
,但仍然有很多人没有给你想要的输出,因为如果你运行print $it->current();
它只会返回Array
,因为你无法输出数组有print
的信息。
您应该使用RecursiveArrayIterator
和RecursiveIteratorIterator
,因为您正在处理多维数组
要获取所有值,请尝试:
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "\n";
}