在文档中,我看到我们如何设置2 &
,为什么?
可以说我喜欢什么区别
这1:
function &func()
{
static $static = 0;
$static++;
return $static;
}
$var1 = func();
echo "var1:", $var1; // 1
和这2:
function func()
{
static $static = 0;
$static++;
return $static;
}
$var1 = func();
echo "var1:", $var1; // 1
或替代变体
这1:
function &func()
{
static $static = 0;
$static++;
return $static;
}
$var1 = &func();
echo "var1:", $var1; // 1
和这2:
function func()
{
static $static = 0;
$static++;
return $static;
}
$var1 = &func();
echo "var1:", $var1; // 1
答案 0 :(得分:1)
第一个this 2
和第二个this 1
之间只有差异。所有其他人都被错误地审判return by reference
。
第二个this 2
甚至会抛出PHP通知(Notice: Only variables should be assigned by reference in ... on line ...
)。
区别在于第一个this 2
按值返回,而第二个this 1
按引用返回。由于它是一个引用,因此可以在函数外部更改变量。
function &func()
{
static $static = 0;
$static++;
return $static;
}
$var1 = &func();
echo "var1:", $var1; // 1
$var1 = 10;
$var1 = &func();
echo "\nvar1:", $var1; // 11
所有片段的evals(使用第二个函数调用):
1这1:https://3v4l.org/p6erT
1这个2:https://3v4l.org/9OcaC
2这个1:https://3v4l.org/uJHSF
2这个2:https://3v4l.org/qJ3qO
另见PHP手册:https://secure.php.net/manual/en/language.references.return.php