0

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

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

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

仅函数定义就足以通过引用正确传递参数。从 PHP 5.3.0 开始,当您在 foo(&$a); 中使用 & 时,您将收到一条警告说“调用时传递引用”已被弃用。从 PHP 5.4.0 开始,调用时传递引用已被删除,因此使用它会引发致命错误。

但是,当我这样做时:

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

然后var_dump在调用这个方法的方法中做一个,“count”没有键。但是,如果我在方法返回var_dump之前做一个正确的操作,显然一个. get_idscount

这是怎么回事?我显然不了解 PHP 的原理,但我通常的谷歌搜索技能完全让我失望。

4

2 回答 2

3

就像在已弃用功能的描述中所说:

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

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

public function get_ids(array &$order)
{
...
}
于 2013-04-07T02:32:18.127 回答
0

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

所有参数如果不带前缀,则按值&传递,如果带前缀,则按引用传递&

于 2013-04-07T17:48:46.607 回答