• 技术文章 >后端开发 >php教程

    PHP的一个全局变量如其引用了一个局部变量的地址

    2016-06-13 10:46:38原创402
    PHP的一个全局变量如果引用了一个局部变量的地址
    PHP code
        $b = "dasdf";    function abc(){        $a = "abc";        global $b;        $b = &$a;        echo $b."inner;";    }    abc();    echo $b.";";


    在函数内部输出b的时候,是abc,但是离开函数后,输出b,又恢复成dasdf的初始值,这是怎么回事呢?按理说,引用了一个局部变量的地址,这个局部变量销毁后,b的值应该是空啊。

    ------解决方案--------------------
    在手册:
    http://www.php.net/manual/zh/language.references.whatdo.php#example-251
    如果在一个函数内部给一个声明为 global 的变量赋于一个引用,该引用只在函数内部可见。可以通过使用 $GLOBALS 数组避免这一点。
    原因如下:
    把 global $var; 当成是 $var =& $GLOBALS['var']; 的简写。从而将其它引用赋给 $var 只改变了本地变量的引用。
    ------解决方案--------------------
    $b = "dasdf";
    function abc(){
    $a = "abc";
    global $b; //这是对 $GLOBALS['b'] 的引用
    $b = &$a;
    $GLOBALS['bb'] = & $a;
    echo $b."inner;";
    }
    abc(); //abcinner;
    echo $b.";"; //dasdf;
    echo $bb; //abc

    ------解决方案--------------------
    记住php的两个概念,所有变量都是指针,所有作用域不同的变量是不同的变量,即可

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:quot abc GLOBALS global echo
    上一篇:关于$row中的计算解决方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 你知道如何用PHP实现多进程吗• 求解:phpcms模板怎样转码?该怎么解决• php怎的快捷知道某个函数在哪个文件用过• CI框架源码阅览-Model.php • 这个网站有源程序吗?高手一上,拜谢
    1/1

    PHP中文网