PHP通过引用/值传递 – 问题

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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; 
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).

脚本宝典总结

以上是脚本宝典为你收集整理的PHP通过引用/值传递 – 问题全部内容,希望文章能够帮你解决PHP通过引用/值传递 – 问题所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。