我对PHP相对缺乏经验,而且我正在尝试对现有代码库进行一些更改。我有一个方法,将数组作为参数:
public function get_ids(array $order)
{
...
return $ret_val;
}
我想在此数组中添加一个额外元素,并与键count
配对。我知道钥匙不存在。我从PHP文档中了解到,所有变量都是通过引用传递的:
单独的函数定义足以正确传递参数 引用。从PHP 5.3.0开始,您将收到一条警告 当您使用&amp ;;时,不推荐使用“call-time pass-by-reference”。在 FOO(安培; $一个);.从PHP 5.4.0开始,调用时传递引用 删除,因此使用它会引发致命错误。
然而,当我这样做时:
public function get_ids(array $order)
{
...
$order['count'] = 5;
return $ret_val;
}
然后在调用此方法的方法中执行var_dump
,没有“count”键。但是,如果我在var_dump
方法返回之前执行了get_ids
,那么 就是count
的键。
怎么了?我显然不理解PHP的校长,但我通常的谷歌搜索技能完全让我失望。
答案 0 :(得分:3)
如同在弃用功能的描述中所述:
Function definitions alone are enough to correctly pass the argument by reference
因此,请指定您希望参数在函数定义中按引用传递。
public function get_ids(array &$order)
{
...
}
答案 1 :(得分:0)
我的PHP文档是所有变量都是 通过按引用:
如果没有&
前缀,则所有参数都按值传递,如果前缀为&
,则按引用传递。