$a = 1; $b = &$a; if ($b == $a++) echo "true"; else echo "false";
false$a = 1:建立變量 $a,值為 1。$b = &$a:$b 成為 $a 的引用,兩者指向同一記憶體。$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 遞增。