通过引用返回PHP

时间:2016-10-10 20:22:51

标签: php

在文档中,我看到我们如何设置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

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

https://3v4l.org/uJHSF

所有片段的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