很少用到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.當多次調用一個函數且要求在調用之間保留某些變量的值時,可考慮采用靜態局部變量。雖然用全局變量也可以達到上述目的,但全局變量有時會造成意外的副作用,因此仍以采用局部靜態變量為宜。