• 技术文章 >后端开发 >PHP问题

    php全局变量如何使用

    coldplay.xixicoldplay.xixi2020-10-10 17:15:28原创81

    php全局变量的使用方法:可以在函数内通过global来声明该变量,代码为【$name = "why";function changeName(){global $name;$name = "what";}】。

    php全局变量的使用方法:

    1、全局变量的global的定义和使用

      最初,我的需求是这样的:

    <?php
    $name = "why";
    function changeName(){
        $name = "what";
    }
    changeName();
    echo "my name is " . $name . "<br/>";
    ?>

      执行代码的结果是:my name is why,而不是执行changeName()后显示what。分析原因,这是因为函数体changeName内$name变量被缺省设置为局部变量,$name的作用域就是在changeName内。于是,修改代码,添加全局变量如下:

    <?php
    global $name;
    $name = "why";
    function changeName(){
        $name = "what";
    }
    changeName();
    echo "my name is " . $name . "<br/>";
    ?>

      注意:不能在用global声明变量的同时给变量赋值。像global $name = "why"的使用方式是错误的。

      定义全局变量后执行的结果仍然为my name is why,这个结果让我吃惊。原来,global的正确用法是:"在一个函数中引入外部的一个变量,如果该变量没有通过参数传递进来,那么就通过global引入进来。" 也就是说,当一个函数引用一个外部变量时,可以在函数内通过global来声明该变量,这样该变量就可以在函数中使用了(相当于当作参数传递进来)。那么,再次修改代码:

    <?php
    $name = "why";
    function changeName(){
        global $name;
        $name = "what";
    }
    changeName();
    echo "my name is " . $name . "<br/>";
    ?>

      这次的运行结果是:my name is what,说明global是起传递参数的作用,而并非使变量的作用域为全局。再看下面的例子:

    <?php
    $name = "why";
    function changeName(){
        global $name;
        $name = "what";
    }
    function changeName2(){
        $name = "where";
    }
    changeName();
    changeName2();
    echo "my name is " . $name . "<br/>";
    ?>

      执行结果为:my name is what,如果在changeName2()中添加global $name,运行结果则是:my name is where。

      综上,global的作用就相当于传递参数,在函数外部声明的变量,如果在函数内想要使用,就用global来声明该变量,这样就相当于把该变量传递进来了,就可以引用该变量了。

      除了使用global参数定义外,还可以使用超全局变量$GLOBAL:

    <?php
    $name = "why";
    function changeName(){
        $GLOBALS['name'] = "what";
    }
    changeName();
    echo "my name is " . $name . "<br/>";
    ?>

    2、global和$GLOBAL

    一个例子:

    <?php
    $var1 = 1;
    $var2 = 2;
    function test1(){
        $GLOBALS['var2'] = &$GLOBALS['var1'];
    }
    test1();
    echo $var2 . "<br />";
    $var3 = 1;
    $var4 = 2;
    function test2(){
        global $var3,$var4;
        $var4 = &$var3;
    }
    test2();
    echo $var4 . "<br />";
    ?>

      输出$var2的值为1,$var4的值为2,因为$var3的引用指向了$var4的引用地址。$var4的实际值并没有改变。官方的解释是:$GLOBALS['var']是外部的全局变量本身,global $var是外部$var的同名引用或者指针。意味着$GLOBAL在一个脚本的全部作用域中都可用,在函数或方法中无需执行global $variable; 就可以访问它们。与所有其他超全局变量不同,$GLOBALS在PHP中总是可用的。另一个例子:

    <?php
    $var1 = 1;
    function test1(){
        unset($GLOBALS['var1']);
    }
    test1();
    echo $var1 . "<br />";
    $var2 = 1;
    function test2(){
        global $var2;
        unset($var2);
    }
    test2();
    echo $var2;
    ?>

      输出结果是$var1不存在,而$var2的值为1。这就证明,$var2只是别名引用,本身的值没有受到任何的改变。也就是说global $var其实就是$var = &$GLOBALS['var'],调用外部变量的一个别名而已!

    想了解更多编程学习,敬请关注php培训栏目!

    以上就是php全局变量如何使用的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php 全局变量
    上一篇:php如何删除关联数组元素 下一篇:php如何实现查询功能实现
    第13期线上培训班

    相关文章推荐

    • php图片类型如何转换• php如何实现判断手机端进行跳转• php如何实现并发• php手机跳转代码是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网