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

PHP 自增自減操作奧秘:引用與後置遞增的面試陷阱

     編輯:PHP 相關知識

PHP 自增自減操作奧秘:引用與後置遞增的面試陷阱

經典面試題

$a = 1;
$b = &$a;
if ($b == $a++) echo "true"; else echo "false";

執行結果:false

逐步分析

  1. $a = 1:建立變量 $a,值為 1。
  2. $b = &$a:$b 成為 $a 的引用,兩者指向同一記憶體。
  3. $a++(後置遞增)產生兩個 opcode:POST_INC 與 IS_EQUAL。
    • POST_INC:**先返回當前值(1)**,再將 $a 遞增為 2。因 $b 是引用,$b 也變為 2。
    • IS_EQUAL:比較 $b(現為 2)與 $a++ 的返回值(1),不相等。

類似陷阱

$a = 1;
$b = &$a;
$b = $a++;
echo "a: $a; b: $b"; // 輸出:a: 2; b: 1

$a++ 返回 1 賦給 $b,隨後 $a 變 2。此時 $b 斷開引用關係(賦值操作),不再同步。

核心觀念

  • 後置遞增 $a++ 返回**遞增前的值**,然後遞增變量本身。
  • 引用變量在**算術運算賦值**(如 $b = $a++)時會斷開引用關係,成為獨立複製。
  • 直接比較 $b == $a++ 時,$b 仍保持引用,已隨 $a 遞增。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved