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;
 

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