PHP變量的范圍
?變量的范圍
–當主程序調用函數時,PHP 會暫時停止目前主要程序流程的運行,并傳遞必要的運算參數給目標函數使用,以執行函數的程序碼片段。
–在函數執行結束后,函數會回傳執行結果所得的數值,并將執行流程轉回原本主程序中斷的地方,繼續執行運作。
?變量的能見度
–所謂變量的能見度,意指變量在程序中的可作用范圍。當一個變量執行賦值動作后,會隨著聲明局部的差異,而有不同的作用范圍。大致上來說變量會依據聲明的局部分為下列兩種:局部變量和全局變量
局部變量(內部變量)
在函數之中聲明的變量就是局部變量,并且該變量只有在函數范圍之中才能加以使用。如果其它程序局部需要調用使用該變量值時,必須透過「return」指令,來將其傳回至主程序區塊以作后續處理。
<?php
$a=0;
function print_A(){
$a = 3; //定義局部變量
echo "在函數中顯示局部變量 a 值: $a <p>";
return $a;
}
$b = print_A();
echo "在函數外顯示局部變量 b 值: $b <br>";
echo $a;
?>
全局變量
在函數范圍之外所聲明的變量就是全局變量。由于函數可以視為單獨的程序片段,所以局部變量會復蓋全局變量的能見度,因此在函數中并無法直接調用使用全局變量。
函數中若要使用全局變量時,必須要利用global關鍵字定義目標變量,以告訴函數主體此變量為全局。
<?php
$A=“Hello !!”; //定義全局變量
function print_A() { //定義函數 print_A()
global $A; //利用 global 關鍵字聲明變量 A 為全局變量
echo $A;
}
print_A();
?>
也可以使用預定義的全局變量數組$GLOBALS.這是一個特殊變量在程序運行時自動創建。格式:echo $GLOBALS[“A”];
注意事項
?在函數中聲明全局變量時,其名字要與全局變量一致
?通過unset($var)可以手動刪除變量,變量會在內存中被釋放,也就不在全局作用域中了。
?使用require與include包含不會影響作用域
?通過參數列表傳遞給函數的變量,對于函數來說是局部變量,除非在傳遞時帶有&引用符號
例:test.php
<?php
if(true) {
$age = 30;
}
echo $age;
函數內部聲明的變量, 只能在函數內部調用, 這就是--------局部變量
函數的參數,就是一個局部變量, 聲明成形成的, 可以在調用時,給值, 傳值
function demo($sex) {
$age = 30;
echo "高老師很帥{$age}, 是{$sex}<br>";
}
demo("男");
echo $sex;