我打算向我们的实习生解释PHP中“按引用传递”和“按值传递”的区别,然后写了这个简单的脚本:
$a=5;
$b=&$a;
$a=8;
echo $b;
// prints 8
$a=5;
$b=$a; //no &
$a=8;
echo $b;
// prints 5
然而,使用php-cli运行php -qa会产生以下结果:
php > $a=5;
php > $b=&$a;
php > $a=8;
php > echo $b;
8
php > // prints 8
php > $a=5;
php > $b=$a; //no &
php > $a=8;
php > echo $b;
8
php > // prints 5
在IT技术中,$b=$a;
这段代码不应该解除 $a 和 $b 的链接关系吗?
因此我变得好奇,并尝试了以下操作:
php > $b=3;
php > echo $a;
3
那么,我错在哪里了?发生了什么?看起来设置引用的操作似乎一直保持着,尽管在$b=$a
这行应该已经清除了引用。我也尝试过:
php > $e=5; $f=$e; $e=6; echo $f;
5
...这一切都像预期的那样工作。
$a
和$b
似乎永久地链接在一起?我是否漏掉了什么重要的点?如何“取消链接”$a
和$b
变量?
unset($b)
吗? - Aleks G