首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 變數完整指南:宣告、賦值、作用域、超全域變數

     編輯:PHP 綜合知識

基本特性

  • **無需宣告型別**:第一次賦值即建立變數。
  • **區分大小寫**:$name ≠ $Name ≠ $NAME。
  • **$ 開頭**:$variable_name,名稱遵循識別字規則 (字母、底線、數字,不以數字開頭)。
  • **值賦值 vs 參考賦值**:預設值複製;& 符號建立參考。

賦值機制

<?php
// 值賦值:複製資料
$a = 10;
$b = $a;      // $b = 10
$b = 20;      // $a 仍為 10

// 參考賦值:指向同一記憶體
$c = 10;
$d = &$c;     // $d 參考 $c
$d = 20;      // $c 也變 20

// 函數參數參考傳遞
function addPrefix(&$str, $prefix) { $str = $prefix . $str; }
$name = 'John';
addPrefix($name, 'Mr. '); // $name 變 'Mr. John'
?>

四大作用域

作用域定義位置可存取範圍生命週期
**區域 (Local)**函數/方法內部僅該函數內函數結束銷毀
**全域 (Global)**函數外部 (腳本最上層)全腳本 (函數需 global 或 $GLOBALS)腳本結束銷毀
**靜態 (Static)**函數內 static $var僅該函數內**諸生不滅**,跨呼叫保留值
**參數 (Parameter)**函數簽名僅該函數內函數結束銷毀

作用域範例

<?php
$x = 4; // 全域

function testScope() {
    $x = 0; // 區域,遮蔽全域
    echo "區域 \$x = $x\n"; // 0
}
testScope();
echo "全域 \$x = $x\n"; // 4

// 存取全域變數
$y = 10;
function accessGlobal() {
    global $y;           // 方式 1:global 關鍵字
    $GLOBALS['y'] = 20;  // 方式 2:$GLOBALS 超全域陣列
}
accessGlobal();
echo $y; // 20

// 靜態變數:遞迴、計數器
function counter() {
    static $count = 0;
    $count++;
    echo "$count ";
}
counter(); counter(); counter(); // 1 2 3
?>

超全域變數 (Superglobals)

自動全域可用,無需 global 宣告:

變數用途
$GLOBALS所有全域變數的參考陣列
$_SERVER伺服器與執行環境資訊 (Headers, Paths, Script 位置)
$_GETURL 查詢字串參數
$_POSTPOST 表單資料
$_FILES上傳檔案資訊
$_COOKIEHTTP Cookie
$_SESSIONSession 資料
$_REQUEST$_GET + $_POST + $_COOKIE 合併 (順序受 variables_order 影響)
$_ENV環境變數

最佳實務

  1. 盡量避免全域變數:造成耦合、難測試、命名衝突。改用依賴注入、單例、服務容器。
  2. 函數參數預設值:function greet($name = 'Guest')。
  3. 型別宣告 (PHP 7+):function add(int $a, int $b): int 提升可讀性與錯誤偵測。
  4. 變數變數 (Variable Variables):$$name 動態存取,慎用,難維護。
  5. 解構賦值 (PHP 7.1+):[$a, $b] = [1, 2];、['x' => $x, 'y' => $y] = $arr;。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved