作用域是指在一個腳本中某個變量可以使用或可見的范圍。PHP具有6項基本的作用域規則。
1.內置超級全局變量可以在腳本的任何地方使用和可見。例如:
//print_r($_SERVER['HTTP_HOST']);//$_SERVER['HTTP_HOST']是一個超級全局變量,值為localhost
function test(){
echo $_SERVER['HTTP_HOST'];//輸出localhost,表明超級全局變量在函數中可見,而且不需要提前聲明
}
test();
echo $_SERVER['HTTP_HOST'];//輸出localhost,表明超級全局變量在函數外可見
?>
2.常量,一旦被聲明,將可以在全局可見;也就是說,它們可以在函數內外使用。
define('USERNAME', "root");//聲明常量,常量名字要用引號括起來
function test(){
echo USERNAME;//輸出root,表明常量在函數中可見
}
test();
echo USERNAME;//輸出root,表明常量在函數外可見
?>
3.在一個腳本中聲明的全局變量在整個腳本中是可見的,但不是在函數內部。
$num = 100;
function test(){
echo $num;//報錯,未定義變量$num;Notice: Undefined variable: num in E:\app\phpstudy\WWW\test\index.php on line 4
}
test();
echo $num;
?>
4.函數內部使用的變量聲明為全局變量時,其名稱要與全局變量名稱一致。
$num = 100;
function test(){
global $num;//要使用關鍵字global
echo $num;//輸出100
}
test();
echo $num;//輸出100
?>
$num = 100;
function test(){
global $num;//要使用關鍵字global
$num = 200;
echo $num;//輸出200
}
test();
echo $num;//輸出200,函數中修改了全局變量的值
?>
5.在函數內部創建並被聲明為靜態的變量無法再函數外部可見,但是可以在函數的多彩執行過程中保持該值。
function test(){
//函數中定義的靜態變量是屬於這個函數的
static $static_num = 1;
$static_num++;
echo $static_num;
}
test();//輸出2
test();//輸出3
//echo $static_num;//函數中定義的靜態變量在函數外部不可見,此處會報錯
?>
6.在函數內部創建的變量對函數來說是本地的,而當函數終止時,該變量也就不存在了。