这取决于功能的目的是什么。如果其明确目的是修改输入,请使用引用。如果目的是根据输入计算一些数据而不是改变输入,那么一定要使用正则return
.
举个例子array_push
:
int array_push(array &$array, mixed $var[, mixed $...])
此函数的明确目的是修改数组。您不太可能需要原始数组和它的副本,包括推送的值。
array_push($array, 42); // most likely use case
// if you really need both versions, just do:
$old = $array;
array_push($array, 42);
如果array_push
没有参考,你需要这样做:
// array_push($array, $var[, $...])
$array = array_push($array, 42); // quite a waste to do this every time
另一方面,像这样的纯计算函数pow
不应该修改原始值:
number pow(number $base, number $exp)
您可能更有可能在希望保持原始数字不变并仅根据它计算结果的上下文中使用此函数。在这种情况下,如果pow
修改原始号码将是一件麻烦事。
$x = 123;
$y = pow($x, 42); // most likely use case
如果pow
引用,你需要这样做:
// pow(&$base, $exp)
$x = 123;
$y = $x; // nuisance
pow($y, 42);