<?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; | 1 | 1 | - | $x 成為 $a 的別名,指向同一記憶體 |
| 3 | $b = $a++; | 2 | 2 | 1 | 後增量:先將當前值 1 賦給 $b,再將 $a 加 1 |
zval 容器,修改任一者,另一者即時見效<?php
$a = 1;
$x = &$a;
$b = ++$a; // 前增量:先 +1 再賦值
// $a=2, $x=2, $b=2
?>
foreach ($arr as &$v) { ... } unset($v); 記得解除引用function foo(&$var) 明確宣告,呼叫端無需加 &