我的代码中的数组很大,所以我将它粘贴到 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
andRecursiveIteratorIterator
因为你正在处理多维数组
要获取所有值,请尝试:
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
echo $key . ":" . $val . "\n";
}