按参考分配

这是参考的第一阶段。基本上,当你通过引用分配时,你允许两个变量共享相同的值。

$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 的实例化。