PHP 變數作用域
PHP 變數作用域
在 PHP 中,變數可以在指令碼的任何地方宣告。
變數的作用域是指令碼中可以引用/使用該變數的部分。
PHP 有三種不同的變數作用域
- local
- global
- static
全域性和區域性作用域
在函式外部宣告的變數具有全域性作用域,只能在函式外部訪問。
示例
具有全域性作用域的變數
$x = 5; // global scope
function myTest() {
// using x inside this function will generate an error
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
echo "<p>Variable x outside function is: $x</p>";
自己動手試一試 »
在函式內部宣告的變數具有區域性作用域,只能在該函式內部訪問。
示例
具有區域性作用域的變數
function myTest() {
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
自己動手試一試 »
不同的函式可以擁有同名的區域性變數,因為區域性變數僅在其宣告的函式內識別。
PHP 的 global 關鍵字
global
關鍵字用於在函式內部訪問全域性變數。
為此,請在函式內部的變數前使用 global
關鍵字。
示例
$x = 5;
$y = 10;
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
自己動手試一試 »
PHP 還將所有全域性變數儲存在一個名為 $GLOBALS[index]
的陣列中。index
包含變數的名稱。此陣列也可以在函式內部訪問,並可用於直接更新全域性變數。
上面的示例可以這樣重寫:
示例
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
自己動手試一試 »
PHP 的 static 關鍵字
通常,當一個函式完成/執行後,它的所有變數都會被刪除。但是,有時我們希望區域性變數不被刪除。我們需要它來完成後續工作。
為此,請在首次宣告變數時使用 static
關鍵字。
然後,每次呼叫該函式時,該變數仍將保留上次呼叫函式時所包含的資訊。
注意:該變數仍然是函式區域性的。