【发布时间】:2011-07-01 21:54:13
【问题描述】:
例如shuffle(&$array);
在将参数传递给这样的函数时省略& 符号是一种不好的做法吗?因为它也可以在没有它的情况下工作......
【问题讨论】:
标签: php variables reference pass-by-reference
例如shuffle(&$array);
在将参数传递给这样的函数时省略& 符号是一种不好的做法吗?因为它也可以在没有它的情况下工作......
【问题讨论】:
标签: php variables reference pass-by-reference
你不需要通过它;它被隐含地理解为参考。这些类型的函数的文档表明它只是为了传达这样一个事实,即不会被复制,而是被引用。
【讨论】:
在 PHP 5.3 中它很糟糕,在早期版本中,我想在某种元方式上它可以帮助下一个人阅读代码,但它通常不是最好的主意,因为它并不是真的 做任何事情,大多数人都会对它的包含感到困惑(为什么这个人这样做?我不明白......)。 & 只使用了四次:
$a =& $b(a 引用 b)function inc(&$b){$b++;}(b 现在将在 func 之外递增)function &get_thing(){ static $thing; return $thing; }(您现在可以修改静态值)foreach($var as $key=>&$val){$val++;}
【讨论】:
&
不,这不是坏习惯。事实上,这是好的做法。
当函数的参数通过引用传递时,应该在函数定义中指定。在PHP manual page for shuffle中可以看到是这样的。
调用时传递引用(如shuffle(&$arr))是不好的做法。自 PHP 5.3 起已弃用,并会发出警告。这是因为如果一个函数不期望它的参数是一个引用,它可能会导致各种奇怪的问题。
【讨论】: