作者:手机用户2502875023 | 来源:互联网 | 2024-10-29 18:14
12345678910111213141516171819202122 上面是我自己运行的结果。手册上是这么说的,不知道说的是什么:引用不是什么如前所述,引用不是指针。这意味着下面的结构不会产生你预期
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
function foo (&$c)
{
global $b;
$b = 3;
//$c = &$b;
//echo $c; //输出 2 3 2
$c = $b;
echo $c; //输出 2 3 3
}
$a = 2;
echo $a.' ';
foo($a);
echo $a;
?> |
上面是我自己运行的结果。
手册上是这么说的,不知道说的是什么:
引用不是什么
如前所述,引用不是指针。这意味着下面的结构不会产生你预期的效果:
1 2 3 4 5 6 7
| function foo (&$var)
{
$var =& $GLOBALS["baz"];
}
foo($bar);
?>
|
这将使 foo 函数中的 $var 变量在函数调用时和 $bar 绑定在一起,但接着又被重新绑定到了 $GLOBALS["baz"] 上面。不可能通过引用机制将 $bar 在函数调用范围内绑定到别的变量上面,因为在函数 foo 中并没有变量 $bar(它被表示为 $var,但是 $var 只有变量内容而没有调用符号表中的名字到值的绑定)。
自己的理解是$c已经是一个引用了,PHP不允许再给它赋上另一个引用。如果再给它赋上另一个引用,那么这个引用$c就跟$a变量自动断开联系,所以输出了两个2。不知道这样理解对不对