* 定義,記憶體位址由程式設計師控制。$a = array('a','c','n');
$b = $a; // 此時 $a、$b 指向同一記憶體區塊,未複製
function printArray(&$arr) { // 參考傳遞
print(count($arr));
}
printArray($a); // Zend 偵測到可能修改,為 $b 複製一份 $a 的資料
若改為值傳遞 function printArray($arr),則不觸發複製,效能更好。
循環 1000 次呼叫,參考傳遞比值傳遞 慢 30% 以上,因頻繁觸發記憶體分配與複製。
function swap(&$a, &$b) { $t=$a; $a=$b; $b=$t; }foreach ($arr as &$v) 修改陣列元素值,結束後建議 unset($v) 解除參考。function &getRef() 使用不當導致難以追蹤的 Bug。new Class() 回傳值而非參考,需 $obj = & new Class()(PHP 5+ 已修正)。