萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 參考運算子 & 完整指南:變數、函式、物件與複製行為

PHP 的參考運算子 & 讓多個變數指向同一記憶體位址,實現「寫時複製」機制。本文系統整理變數參考、函式參考傳遞、參考回傳、物件參考與 unset 行為。

基本變數參考

<?php
$a = 100;
$b = &$a;  // $b 參考 $a
$a++;
echo $b;   // 101,兩者共用同一記憶體
?>

預設為傳值;加上 & 才是傳址。

函式參數參考傳遞

function foo(&$val1, $val2) {
    $val1++;  // 影響外部變數
    $val2++;  // 僅影響區域副本
}
$a = 5; $b = 10;
foo($a, $b);
echo $a; // 6
echo $b; // 10

函式參考回傳

function &find_var($param) {
    // ... 邏輯
    return $found_var; // 回傳變數參考
}
$foo =& find_var($bar); // 必須雙端都加 &
$foo->x = 2; // 修改原變數

物件參考行為(PHP 5+)

class A { public $abc = "ABC"; }
$b = new A();
$c = $b;        // PHP 5 預設即為參考複製
$c->abc = "DEF";
echo $b->abc;   // DEF,兩者指向同一物件

若需獨立副本,請使用 clone:$c = clone $b;

unset 與參考

$a = 1;
$b =& $a;
unset($a); // 僅解除 $a 綁定,$b 仍存在且值為 1

全域變數與 $GLOBALS

global $var;           // 等同於
$var =& $GLOBALS['var'];

效能建議

  • 大型陣列傳遞建議使用參考 & 節省記憶體。
  • 一般情況下 PHP 5+ 物件預設參考傳遞已足夠,無需額外加 &。
copyright © 萬盛學電腦網 all rights reserved