在PHP

2013-04-07 76 views
0

操纵参数我与PHP相对缺乏经验,我试图做一些改变现有的代码库。我有带有一个数组为参数的方法,包括:在PHP

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

欲附加的元素添加到该阵列中,与键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,有一个为“计数”没有钥匙。但是,如果我的get_ids方法返回之前做一个var_dump右边,有明确count的关键。

这是怎么回事?我显然不理解PHP的一位负责人,但我平时的谷歌搜索技巧完全失败了。

+0

这报价是当你调用* *的功能,而不是当你是* *定义功能。如果这是预期的行为,您仍然应该将函数定义为通过引用接受其参数。 – nickb 2013-04-07 02:35:20

+0

@nickb OHHHHHH。是的。完全了解现在的情况。我认为他们的意思是“简单地定义函数意味着它将通过引用传递”。显然不是。谢谢! – 2013-04-07 02:51:14

回答

3

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

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

因此指定要你通过参考参数传递你的函数定义。

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

OHHHHHH。是的。 PHP完全新手回来困扰我... – 2013-04-07 02:50:32

0

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

所有参数都是按值传递的,如果不与&前置,并通过引用如果传递前加&