生物都是有一定的記憶功能的,如何讓程序也有記憶的功能呢?
需要用到靜態(tài)變量
普通的局部變量,在每一次調(diào)用函數(shù)時都會進(jìn)行一下初始化,并且在函數(shù)調(diào)用結(jié)束時,值就從內(nèi)存里消失了
function t() {
$a = 3;
$a += 1;
return $a;
}
echo t(),'<br >';
echo t(),'<br >';
echo t(),'<br >';
結(jié)果如下:

jingtai.png
函數(shù)寫好之后就放在這里,如果不調(diào)用,是不執(zhí)行的
執(zhí)行是在內(nèi)存中來回倒騰數(shù)據(jù)
當(dāng)我們調(diào)用函數(shù)的時候,會在內(nèi)存中申請一個空間來進(jìn)行執(zhí)行
當(dāng)函數(shù)運(yùn)行完畢時,這個空間就會從內(nèi)存中清除掉.
當(dāng)然,如果再調(diào)用函數(shù)也是會再次申請開辟空間的
并且在空間清除前,會 return 一個值給調(diào)用行使用
如何聲明一個靜態(tài)變量?
static
function t1() {
static $a = 3;
$a += 1;
return $a;
}
echo t1(),'<br >';
echo t1(),'<br >';
echo t1(),'<br >';
運(yùn)行結(jié)果如下:

static.png
聲明靜態(tài)變量之后,在函數(shù)初次調(diào)用時,會對數(shù)據(jù)進(jìn)行初始化
但是當(dāng)函數(shù)結(jié)束時,申請的空間不會從內(nèi)存中消失
并且會單獨(dú)開辟一個空間來存儲return返回的值,該值在下一次的函數(shù)執(zhí)行會接著用

kongjian.png