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