[面试常问总结] PHP变量范围-global/static

一般情况下,在函数内定义的变量只能在函数内生效 , 函数执行结束就销毁

函数内使用global关键字 , 函数内变量的引用会指向其全局版本 , 可以读取到外部变量 , 也能直接修改外部变量

function testGlobal(){
        global $b; 
        $b=2;

}
testGlobal();
var_dump($b);

输出 2

 

 

函数内使用static关键字 , 函数第一次调用时 , 变量被初始化 , 函数结束后 , 该变量不会被销毁 , 下次再调该函数时 , 此静态变量还会存在

<?php
function test()
{
    static $a=0;
    echo $a."\n";
    $a++;
}
test();
test();
test();

输出:

0
1
2

 

因为global和static是通过引用实现的 , 如果再赋值给引用 , 就会不可预期

function testGlobalRef(){
        global $c; 
        $d=1;
        $c=&$d;

}
testGlobalRef();
var_dump($c);

输出 null

posted @ 2021-05-17 15:48  唯一客服系统开发笔记  阅读(84)  评论(0编辑  收藏  举报