PHP通过引用/值传递 – 问题
发布时间:2020-12-13 17:39:04 所属栏目:PHP教程 来源:网络整理
导读:我打算向我们的实习生解释 PHP中“pass by reference”和“pass by value”之间的区别,并做了这个简单的脚本: $a=5; $b=$a; $a=8; echo $b;// prints 8$a=5; $b=$a; //no $a=8; echo $b;// prints 5 但是,使用php -qa在php-cli中运行它会产生: php $a=5; p
我打算向我们的实习生解释
PHP中“pass by reference”和“pass by value”之间的区别,并做了这个简单的脚本:
$a=5; $b=&$a; $a=8; echo $b; // prints 8 $a=5; $b=$a; //no & $a=8; echo $b; // prints 5 但是,使用php -qa在php-cli中运行它会产生: 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 不应该$b = $a;取消联系$a和$b? …所以我得到了curius,并尝试: php > $b=3; php > echo $a; 3 那么,我怎么弄错了?这里发生了什么?似乎参考设置以某种方式粘着,即使它应该在$b = $a行清除?我也尝试过: php > $e=5; $f=$e; $e=6; echo $f; 5 ……哪个按预期工作. $a和$b似乎永久关联?我在这里错过了一些重点吗?如何“取消链接”$a和$b变量? 解决方法
如果为变量赋值,为什么要清除引用?它的工作原理如下(带有半简化注释):
$a = 5; // creates a "slot",puts 5 in it,makes $a point to it $b =& $a; // makes $b point to the same "slot" $a points to $c = 6; // creates a "slot",puts 6 in it,makes $c point to it $a = $c; // puts the value of the slot $c points to into the slot $a points to echo $b; // outputs the value of the slot $b points to (6) 它正在为变量赋值.值是文字(5)还是由另一个变量持有的值无关紧要.引用保持不变($b). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |