通过引用返回时非常有用 你想用一个函数来找到 引用应该是哪个变量 约束即可。不要使用按引用返回 提高性能。引擎 将自动优化此功能 它自己的。仅在返回时引用 你有一个有效的技术理由 这样做。
粗体是什么意思?
它是指
之类的东西public function &getHellos() { $sql = 'SELECT id, greeting FROM #__hello'; $data = $this->_getList($sql); return $data; }
我不绑定任何变量?
答案 0 :(得分:4)
当我们希望函数GetRef()
决定哪个变量$foo
或$bar
,参考$foo_or_bar
应该绑定时,我们通过引用返回:
$foo = "foo";
$bar = "bar";
function &GetRef(){
global $foo, $bar;
if(rand(0, 1) === 1){
return $foo;
}else{
return $bar;
}
}
$foo_or_bar =& GetRef();
$foo_or_bar = 'some other value';
var_dump($foo); // either one of this will be 'some other value'
var_dump($bar); // either one of this will be 'some other value'
Derick Ethans在"References in PHP: An In-Depth Look"中详细阐述了这一点:
这个[通过引用返回]很有用,例如,如果你愿意的话 使用函数选择要修改的变量,例如选择 数组元素或树结构中的节点。
示例代码演示通过引用返回选择数组元素:
function &SelectArrayElement(&$array, $key){
return $array[$key];
}
$array = array(0, 1, 2);
$element =& SelectArrayElement($array, 0);
$element = 10;
var_dump($array); // array(10, 1, 2)
答案 1 :(得分:2)
钠。您无法传递对函数名称的引用。 通过引用传递变量时,如果在函数中更改它的值,它的值也将在函数外部更改。
例如:
function test(&$var) {
$var = strtolower($var);
}
function second_test($var) {
$var = strtolower($var);
}
$var = 'PHP';
second_test($var);
echo $var;
echo "\r\n";
test($var);
echo $var;
这将显示:
PHP
php
由于second_test方法没有通过引用传递的变量,因此更新后的值仅在函数内部更新。 但测试方法作为变量通过引用传递。所以它的值将在这个函数的内部和外部更新。
答案 2 :(得分:0)
我认为它指的是byref 参数而不是函数。例如:
function doStuff(&$value1, &$value2) {
...
}
是byref的可接受用法,因为doStuff()函数必须返回2个值。如果只有doStuff()只需要影响一个值,那么当函数按值返回它会更优雅。
答案 3 :(得分:0)
粗体部分意味着如果你想保留对变量的引用而不是这个变量的值,它会很有用。
关于returning references的例子,在php.net上,很好地解释了,IMO。