是否有必要明确地通过引用?

时间:2011-07-01 21:54:13

标签: php variables reference pass-by-reference

例如shuffle(&$array);

将参数传递给像这样的函数时,忽略&符号是不好的做法吗?因为它没有它也能工作......

3 个答案:

答案 0 :(得分:4)

你不需要通过它;它隐含地被理解为参考。这些类型的函数的文档仅仅表明它不会被复制,而是被引用。

答案 1 :(得分:2)

在PHP 5.3中它很糟糕,在早期版本中,我认为在某种元方式下它可以帮助下一个人阅读代码,但它通常不是最好的主意,因为它实际上不是任何东西,大多数人都会因为它的包含而感到困惑(为什么这个人这样做?我不明白......)。 &仅使用四次:

  • 分配变量引用:$a =& $b(引用b)
  • 参数:function inc(&$b){$b++;}(b现在将在func之外增加)
  • 返回:function &get_thing(){ static $thing; return $thing; }(您现在可以修改静态值)
  • 迭代:foreach($var as $key=>&$val){$val++;}

答案 2 :(得分:1)

不,这不是一种不好的做法。事实上,这是良好的实践。

当函数的参数通过引用传递时,应该在函数定义中指定。你可以在PHP manual page for shuffle中看到这一点。

呼叫时间传递参考(如shuffle(&$arr))是不好的做法。从PHP 5.3开始不推荐使用它,并会发出警告。这是因为如果函数不期望其参数作为参考,它可能会导致各种怪异问题。