PHP----------PHP函數里面的static靜態變量


 很少用到static這個關鍵詞,不管是類里面還是方法里面基本都沒怎么用過。平時看到類里面有這個都沒什么好奇的,今天在函數里面看到了這個,就去百度了一下。

<?php
function test1(){
    static $a = 0;
    $a++;
    echo 'test1的'.$a.'<br/>';
}
function test2(){
    $a = 0;
    $a++;
    echo 'test2的'.$a.'<br/>';
}
test1();
test1();
test2();
test2();
test1();

以上兩個函數寫在同一個文件下,先看下面運行結果

大家可以很容易的看出來,test1里面的$a是每調用一次test1就會在上次調用test1的基礎上增加1,而且跟test2里面的$a沒有任何關系。

那這里就總結一下static在函數里面定義變量的作用,(以上完全自己手敲沒有復制外部資料。以下百度所得)

1.不會隨着函數的調用和退出而消失,當再次調用定義它的函數時,它又可繼續使用,而且保存了前次被調用后留下的值
2.靜態局部變量只會初始化一次
3.靜態屬性只能被初始化為一個字符值或一個常量,不能使用表達式。即使局部靜態變量定義時沒有賦初值,系統會自動賦初值0(對數值型變量)或空字符(對字符變量);靜態變量的初始值為0。
4.當多次調用一個函數且要求在調用之間保留某些變量的值時,可考慮采用靜態局部變量。雖然用全局變量也可以達到上述目的,但全局變量有時會造成意外的副作用,因此仍以采用局部靜態變量為宜。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM