繁体   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