似乎我不能通过引用迭代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'
任何解决方法?
答案 0 :(得分:6)
任何解决方法?
简短回答:不要按引用进行迭代。这是几乎所有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);
答案 1 :(得分:0)
根据文档,splfixedarray()的唯一优势是它比普通数组更快。但我不记得有人提到阵列的速度很慢。因此,您最好的解决方案可能是切换到常规阵列。