global,static的区别

1、在函数内部使用global关键字定义的变量可以成为全局变量,如果该变量已经被定义了,那么他的值就是原来的值,否则就是一个新的全局变量(一句话:已存在就不再创建):

<?php
    $a=1;
    function run(){
        global $a;
        $a=10;
        $a++;
    }
    run();
    echo "Global variable a=$a \n";
    $b=100;
    function run1(){
        $b=10;
        $b+=10;
    }
    run1();
    echo "variable b=$b\n";
    function run2(){
        global $c;
        $c=10;
        function innerRun0($c){
            $c=20;
        }
        innerRun0($c);
        var_dump($c);
        function innerRun1(&$c){
            $c=20;
        }
        innerRun1($c);
        var_dump($c);
        function innerRun2(){
           global $c;
            $c=30;
        }
        innerRun2();
        var_dump($c);
    }
    run2();
    ?>

Global variable a=11
variable b=100
int(10)
int(20)
int(30)

如果在函数内部嵌套定义了另外一个函数,要想使用并改变父类函数中变量中的值,可以使用引用传递的方式(可以理解成C++中的引用);

2.static和c语言中的static使用方式是一样的,函数中使用它之后,当函数执行完毕之后,该变量的空间不会被立即回收,而且只被初始化一次:

function run(){
        static $a=10;
        $a++;
        var_dump($a);
    }
    run();
    run();
    run();

int(11)
int(12)
int(13)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容