【发布时间】:2013-04-07 02:26:44
【问题描述】:
我对 PHP 相对缺乏经验,我正在尝试对现有代码库进行一些更改。我有一个将数组作为参数的方法:
public function get_ids(array $order)
{
...
return $ret_val;
}
我想向这个数组添加一个额外的元素,与键 count 配对。我知道那把钥匙不存在。我对 PHP 文档的理解是所有变量都是通过引用传递的:
仅函数定义就足以正确传递参数 引用。从 PHP 5.3.0 开始,您将收到一条警告说 当您使用 & in 时,不推荐使用“call-time pass-by-reference” 富(&$a);。从 PHP 5.4.0 开始,调用时传递引用是 已删除,因此使用它会引发致命错误。
但是,当我这样做时:
public function get_ids(array $order)
{
...
$order['count'] = 5;
return $ret_val;
}
然后在调用此方法的方法中执行var_dump,没有“count”键。但是,如果我在get_ids 方法返回之前执行var_dumpright,那么显然是一个count 的键。
怎么了?我显然不了解 PHP 的原理,但我通常的谷歌搜索技能完全让我失望。
【问题讨论】:
-
那句话是你调用函数的时候,而不是你定义函数的时候。如果这是预期的行为,您仍然应该将函数定义为通过引用接受其参数。
-
@nickb OHHHHHH。是的。现在完全理解上下文。我认为他们的意思是“简单地定义函数意味着它将通过引用传递。”显然不是。谢谢!
标签: php arrays pass-by-reference