我想知道数组参数传递的表现:值得添加'通过引用传递'避免数据副本的参数说明符,或者运算符已经隐式实现了这种微优化?
让我们说我有一个非顺序键索引的数组(当然)。我写过这个帮手
function position_in_array($needle, &$haystack) {
$k = array_search($needle, $haystack);
return $k === false ? false : array_search($k, array_keys($haystack));
}
我可以看到from documentation让我认为参数数组 copy 可能真的是复制写入。
如果这样的假设证明是正确的,我会删除'参考'说明符。
答案 0 :(得分:2)
PHP是一种动态的,松散类型的语言,它使用写时复制和引用计数。
是的,PHP使用copy on write。
您不需要指定&除非您需要修改传递给您的函数的参数(这意味着您不希望复制写入,但真正的参考)
正如N.B在变量介绍中所评论的那样,it's taken from the manual。