按參考分配
這是參考的第一階段。基本上,當你通過引用分配時,你允許兩個變數共享相同的值。
$foo = &$bar;
$foo
和 $bar
在這裡是相等的。他們沒有指向彼此。他們指向同一個地方( 價值 )。
你也可以在 array()
語言結構中通過引用進行分配。雖然不是嚴格意義上的參考作業。
$foo = 'hi';
$bar = array(1, 2);
$array = array(&$foo, &$bar[0]);
但請注意,陣列內部的引用可能存在危險。使用右側的引用執行正常(非引用)賦值不會將左側轉換為引用,但在這些正常賦值中保留陣列內的引用。這也適用於通過值傳遞陣列的函式呼叫。
通過引用分配不僅限於變數和陣列,它們也存在於函式和所有傳遞引用關聯中。
function incrementArray(&$arr) {
foreach ($arr as &$val) {
$val++;
}
}
function &getArray() {
static $arr = [1, 2, 3];
return $arr;
}
incrementArray(getArray());
var_dump(getArray()); // prints an array [2, 3, 4]
如上所述,賦值是函式定義中的關鍵。你不能通過引用傳遞一個表示式,只有一個值/變數。因此,$a
中的 $a
的例項化。