为了账号安全,请及时绑定邮箱和手机立即绑定

PHP函数引用问题

PHP函数引用问题

PHP
aluckdog 2019-03-06 21:12:19
<?php $var3 = 1; $var4 = 2; function test2(){ global $var3,$var4; $var4 = &$var3; $var4 = 3; //$var3 = 3; } test2(); echo $var4 ; ?> 问题1:这里$var4为何还是输出2呢,不管是在后面重新给$var3还是$var4赋值都不起效果,我的理解是在函数里$var3将引用和值传给了$var4,那么$vars4就应该和$var3指向同一个地址了。。。。 问题2:求推荐一本适合PHPer的书,我比较喜欢专研上面这些 PHP原理的书,谢谢了。
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

在执行global $var4;时,php产生了一个和全局变量同名的局部变量,指向了全局变量。
$var4 = &$var3; 时,局部变量$var4不再指向全局变量$val4,而重新指向全局变量$var3
局部变量$var4的改变,不会再影响到全局变量$val4,只会影响到重新指向的全局变量$val3

查看完整回答
反对 回复 2019-03-18
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

在函数中定义global 变量时,是传引用,
定义global $var4; 会生成两个变量关系为 $local_var4 = &$global_var4;
函数中的第三行可以理解为:$local_var4 = &$local_var3,又变为$local_var3 的引用,
$local_var3又是$global_var3 的引用
所以第四行会导致$var3的值变为3,与全局$var4无关

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 382 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信