[英]Using foreach with SplFixedArray
似乎我無法通過引用重復訪問SplFixedArray中的值:
$spl = new SplFixedArray(10);
foreach ($spl as &$value)
{
$value = "string";
}
var_dump($spl);
輸出:
Fatal error: Uncaught exception 'RuntimeException' with message 'An iterator cannot be used with foreach by reference'
任何解決方法?
任何解決方法?
簡短的回答:不要按引用進行迭代。 這是幾乎所有PHP的迭代器拋出的異常(有極少數例外情況除外); 對於SplFixedArray
來說並沒有什么特別的。
如果希望在foreach
循環中重新分配值,則可以像使用普通數組一樣使用鍵。 我不會稱其為解決方法 ,因為它是正確且可預期的方法。
$spl = new SplFixedArray(10);
foreach ($spl as &$value)
{
$value = "string";
}
var_dump($spl);
$spl = new SplFixedArray(10);
foreach ($spl as $key => $value)
{
$spl[$key] = "string";
}
var_dump($spl);
根據文檔,splfixedarray()的唯一優點是它比普通數組快。 但是我不記得有人提到數組這么慢。 因此,您最好的解決方案可能是切換到常規陣列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.