PHP 通过引用分配

示例

这是引用的第一阶段。本质上,当您通过引用进行分配时,就是允许两个变量共享相同的值。

$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()。