按参考分配
这是参考的第一阶段。基本上,当你通过引用分配时,你允许两个变量共享相同的值。
$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
的实例化。