猿问

PHP函数引用问题

<?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原理的书,谢谢了。

aluckdog
浏览 383回答 3
3回答

收到一只叮咚

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

鸿蒙传说

在函数中定义global 变量时,是传引用, 定义global $var4; 会生成两个变量关系为 $local_var4 = &$global_var4;函数中的第三行可以理解为:$local_var4 = &$local_var3,又变为$local_var3 的引用,而$local_var3又是$global_var3 的引用所以第四行会导致$var3的值变为3,与全局$var4无关
随时随地看视频慕课网APP
我要回答