PHP中的引用不是指针
来源:2-1 PHP引用变量考察点 (上)
小新在编程
2018-02-07
老师,您好!
看了老师课程中 的PHP基础中的第一小节,我在PHP官网看到了这样一个例子,如下:
function foo(&$var)
{
$var =& $GLOBALS["baz"];
}
foo($bar);这里官网给出的解释,如下:
这将使 foo 函数中的 $var 变量在函数调用时和 $bar 绑定在一起,但接着又被重新绑定到了 $GLOBALS["baz"] 上面。不可能通过引用机制将 $bar 在函数调用范围内绑定到别的变量上面,因为在函数 foo 中并没有变量 $bar(它被表示为 $var,但是 $var 只有变量内容而没有调用符号表中的名字到值的绑定)
官网给的解释不是很懂,我个人觉得这里的$bar应该有值的,但是没有?为什么说PHP中的引用不是指针?
希望老师解答一下,非常感谢!!! ^_^
写回答
1回答
-
Jason
2018-02-11
是这样,当调用foo($bar),由于形式参数$var是引用,因此此时$var的值是$bar的地址,而在函数内部,$var的值又被重新赋值为全局变量baz的地址,因此此时$var的值彻底变成了baz的地址,已经跟$bar无关。PHP的引用不是指针,例如 $a = &$b,如果释放$b,$a并不会释放,而指针是会释放的,因此两者是有区别的。
10
相似问题