在php中操作参数


Manipulate parameter in php

我对PHP相对缺乏经验,我正试图对现有的代码库进行一些更改。我有一个以数组为参数的方法:

public function get_ids(array $order)
{
    ...
    return $ret_val;
}

我想在这个数组中添加一个额外的元素,与键count配对。我知道那把钥匙不存在。我对PHP文档的理解是,所有变量都是按引用传递的:

函数定义本身就足以正确传递实参通过引用传递。从PHP 5.3.0开始,您将得到这样的警告当您使用&在foo(和一个美元);。从PHP 5.4.0开始,调用时引用传递是已删除,因此使用它将引发致命错误。

但是,当我这样做时:

public function get_ids(array $order)
{
    ...
    $order['count'] = 5;
    return $ret_val;
}

,然后在调用此方法的方法中执行var_dump,没有"count"键。但是,如果我在get_ids方法返回之前执行var_dump,则显然 count的键。

怎么了?我显然不理解PHP的原则,但我通常的谷歌技能完全失败了。

就像在已弃用特性的描述中所说的:

Function definitions alone are enough to correctly pass the argument by reference

因此,在函数定义中指定您希望通过引用传递参数。

public function get_ids(array &$order)
{
...
}

我从PHP文档中得知所有的变量都是引用传递:

所有参数如果不加&,则按值传递;如果加&,则按引用传递。