操纵php中的参数

时间:2013-04-07 02:26:44

标签: php arrays pass-by-reference

我对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的校长,但我通常的谷歌搜索技能完全让我失望。

2 个答案:

答案 0 :(得分:3)

如同在弃用功能的描述中所述:

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

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

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

答案 1 :(得分:0)

  

我的PHP文档是所有变量都是   通过按引用:

如果没有&前缀,则所有参数都按值传递,如果前缀为&,则按引用传递。