例如shuffle(&$array);
将参数传递给像这样的函数时,忽略&
符号是不好的做法吗?因为它没有它也能工作......
答案 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开始不推荐使用它,并会发出警告。这是因为如果函数不期望其参数作为参考,它可能会导致各种怪异问题。