这是引用的第一阶段。本质上,当您通过引用进行分配时,就是允许两个变量共享相同的值。
$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()); // 打印一个数组[2,3,4]
分配是上述功能定义中的关键。你不能通过引用传递一个表达式,只有一个值/变量。因此$ain的实例化bar()。