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

PHP 變數引用面試經典題:$a=1; $x=&$a; $b=$a++; 解析 $b 與 $x 的值

     編輯:PHP 綜合知識

題目

<?php
$a = 1;
$x = &$a;  // $x 為 $a 的引用
$b = $a++; // 後增量賦值
?>

問:$b 和 $x 的值分別是多少?

答案

$b = 1;
$x = 2;

詳細執行流程

步驟程式碼$a$x (引用 $a)$b說明
1$a = 1;1--初始化
2$x = &$a;11-$x 成為 $a 的別名,指向同一記憶體
3$b = $a++;221後增量:先將當前值 1 賦給 $b,再將 $a 加 1

核心觀念

  • 引用 (&):兩個變數指向同一 zval 容器,修改任一者,另一者即時見效
  • 後增量 ($a++):回傳「增量前」的值,副作用是變數本身 +1
  • 因 $x 是 $a 的引用,$a 變為 2 時,$x 同步變為 2
  • $b 拿到的是增量前的值 1,與 $a/$x 無關

對比:前增量

<?php
$a = 1;
$x = &$a;
$b = ++$a; // 前增量:先 +1 再賦值
// $a=2, $x=2, $b=2
?>

實務提醒

  • 除非必要,避免使用引用,增加程式認知負擔與除錯難度
  • foreach 遍歷需修改原陣列時:foreach ($arr as &$v) { ... } unset($v); 記得解除引用
  • 函數參數傳址:function foo(&$var) 明確宣告,呼叫端無需加 &
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved