<?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
。
鸿蒙传说
TA贡献1865条经验 获得超7个赞
在函数中定义global 变量时,是传引用,
定义global $var4
; 会生成两个变量关系为 $local_var4 = &$global_var4;
函数中的第三行可以理解为:$local_var4 = &$local_var3
,又变为$local_var3
的引用,
而$local_var3
又是$global_var3
的引用
所以第四行会导致$var3
的值变为3,与全局$var4无关
- 3 回答
- 0 关注
- 382 浏览
添加回答
举报
0/150
提交
取消