簡體   English   中英

與SplFixedArray一起使用foreach

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM