變量作用域是 PHP 初學者最易踩坑的概念之一。本文通過對比代碼,清晰演示局部變量、全局變量與 global 關鍵字的行為差異,幫助建立正確的心智模型。
<?php
$a = 1;
$b = 2;
function sum() {
$a;
$b;
$b = $a + $b;
}
sum();
echo $b; // 輸出 2,而非預期的 3
?>
原因:函數內部的 $a、$b 是新建的局部變量,與外部同名變量毫無關係。函數結束時局部變量銷毀,外部 $b 保持原值 2。
<?php
$a = 1;
$b = 2;
function sum() {
global $a, $b; // 聲明使用全局變量
$b = $a + $b;
}
sum();
echo $b; // 輸出 3
?>
global $a, $b 在函數內部創建對全局同名變量的引用,而非複製。修改即影響全局。
$GLOBALS['b'] = 3。static) 僅在函數內部可見,但生命週期贯穿腳本。$this->var 訪問,與全局/局部無關。function sum($a, $b) { return $a + $b; } 更清晰、可測試、可復用。理解作用域,是寫出可維護 PHP 代碼的關鍵一步。