PHP中的函数内部申明global变量
昨天,朋友问我⼀个问题,问题如下:
<?php
$a=1;
$b=2;
function test(){
global $a,$b;
$b=20;
$a=&$b;
}国内php空间
test();
echo $a;
>
问,这段代码最后输出什么值?
按照我的第⼀理解,我会回答20。但是⼀想,如果答案是20,那么朋友就没必要问我了,于是⾃认聪明的回答2.
朋友摇摇头,让我在机器上测试⼀下,意想不到的结果出现了,1.
经过翻阅⽂档,⽹上查资料,我个⼈的理解是这样的,问题的所在其实就是php中函数内部申明global变量,它会在本地空间创建⼀个本地的a变量,但是把它的值指向外部的a所存储值的内存位置,所以$a=&$b仅仅将本地空间的那个a的值保存的位置指向本地的b变量,⽽并没有改变本地a之前所指向的外部a的存储的值,然后在函数外部输出$a,⾃然输出的是外部的$a变量,结果⾃然是1.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论