我的代碼中的數組非常大,所以我將它粘貼到pastebin中。 http://pastebin.com/6tviT2Xj爲什麼迭代ArrayIterator以無限循環結束?
我不明白爲什麼我得到無限循環
邏輯這個腳本是:
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
我的代碼中的數組非常大,所以我將它粘貼到pastebin中。 http://pastebin.com/6tviT2Xj爲什麼迭代ArrayIterator以無限循環結束?
我不明白爲什麼我得到無限循環
邏輯這個腳本是:
$it = new ArrayIterator($options);
while($it->valid()) {
print $it->key();
print $it->current();
}
因爲你從來沒有在你的迭代器(with ArrayIterator::next())移動。
while ($it->valid()) {
...
$it->next();
}
你應該使用$it->next();
否則你會cicle在永恆
的主要問題是不是在你的,但使用$it->next();
相同的密鑰仍然很多沒有給你想要的輸出,因爲如果你運行print $it->current();
它會僅返回Array
,因爲您無法使用print
輸出陣列信息。
您應該使用RecursiveArrayIterator
和RecursiveIteratorIterator
,因爲你是在處理多維數組
要獲得所有值嘗試:
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ($it as $key => $val) {
echo $key . ":" . $val . "\n";
}
@Downvoter你能給解釋嗎? – Baba
你遍歷當前元素,你需要做$it->next();
指向/去下一個元素
不使用'forea ch'使用迭代器似乎很像PHP3 ...;) – Sven
是的,但我必須知道下一個元素。 – drupality
無論如何遺忘下一個():P – drupality