局部變量:在函數內部中定義的變量,它的作用域爲函數定義範圍內。
全局變量:在函數外部定義的變量,它的作用域從定義處一直到文件結尾。
在php中函數被視爲單獨的程序片,所以局部變量會覆蓋全局變量,即使局部變量中並定義沒有全局變量相同的變量,也會被覆蓋。
如下:
$a=5;
$b=3;
function t()
{
echo $a-$b;//輸出0
}
要想在函數中直接使用全局變量可以通過 global關鍵字聲明 或者通過php中自定義的$GLOBALS數組獲取
function t()
{
global $a,$b;
echo $a-$b;
}
function t()
{
echo $GLOBALS['a']-$GLOBALS['b'];
}
靜態變量:通過static 定義一個靜態變量, 如:
function test()
{
static $t;
$t++;
return $t;
}
for($i=0;$i<6;$i++)
{
echo test()."<br />";
}
//輸出 1 2 3 4 5
即靜態變量在第一次初始化後,該變量的值就一直存在內存中,不會隨着函數而被註銷。
注意:如果在函數中 unset() 一個靜態變量,那麼在函數內部此靜態變量將被銷燬。但是,當再次調用此函數時,此靜態變量將被複原爲上次被銷燬之前的值。