$a="a";
function test(){global $$a;
$$a="aa";
echo $a;
}
echo $a;
我什么我这么定义global不行,安道理来说$$a也是一个变量但为什么不能定义为全局变量呢?高手在哪里?

解决方案 »

  1.   

    因为$a没在函数test的局部变量中,所以global $$a; 会提示Undefined variable。如果在test函数中定义个 $a = 'a' 就好了。
      

  2.   

    楼主的基础知识不强呀,
    $$a; 代表一个变量名是取$a的值的变量
    在函数里面$a并没有值,因为你没有global
    所以$$a其实是一个空变量
    global一个空变量显然是不行的,
    再讲明白一点你的上面变类似下面这个:$a='1';
    function test ()
    {
        global $b;
        $b="aa";
        echo $a; 
    }
    echo $a;
    虽然你写成了$$a但你的$a未global其实就像上面的$b 一样,
    然后你的操作就像在操作$b一样了。
      

  3.   

    CSDN不能编辑,郁闷。补充一下
    你的函数里的
    $$a是不等于$a的,因为你没有给$a符值
    如果你在函数里面一开始:
    $a='a';
    这样$$a就等于$a了,
      

  4.   

    是 globe 不是  global 
      

  5.   

    抱歉,我搞错了$a="a"; 
    function test(){ global $a; 
    $$a="aa"; 
    echo $a; 

    echo $a;
      

  6.   

    楼主把$$a写成${$a}可能更能理解global