PHP中的static理解

PHP里面只有全局作用域和函数作用域,没有块作用域


静态局部变量的初始化表达式必须是一个常量或者常量表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。

stattic(静态局部变量):
static类局部变量不会,它不管其所在的函数是否被调用,都会一直存在;不过,尽管该变量还继续存在,但不能在其所在的函数外使用它,只能在某个特定函数中使用,但一直占据存储空间的变量.除非再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。

<?php
function a() {
    //可以不给初值,有默认值
    static $test = 1;//静态变量,它仍然是局部的,在外不能直接访问的。出现在函数内部的基本类型的的静态变量初始化语句只有在第一次调用才执行

    //直接不给初值1是错误的        
    $auto_var = 1;//自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。

    echo $test;
}
 
a();
echo $test;//这里会报错
echo $auto_var;//也没有
//auto自动变量会随着函数被调用和退出而存在和消失,而static类局部变量不会

global(静态全局变量)

<?php
function a() {
    global $test;//不能写上"static"加以修饰,那样是错误的
    $test = 1;
    echo $test;
}
 
a();
echo $test;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章