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并不会释放,而指针是会释放的,因此两者是有区别的。

1
0

360大牛带你横扫PHP职场 全面解读PHP面试

全面、系统剖析PHP面试,拿下心仪Offer

1817 学习 · 464 问题

查看课程