我知道$a =& $b
assigns$a
作为参考,$b
并且我已经阅读了一些关于它的答案,但没有人提供真正有用的示例用法,包括:PHP 中的“=&”和“&=”运算符是什么意思?
任何人都可以提供一个最小的例子来展示如何=&
在 PHP 中有用吗?为什么有人想为一个变量取两个名字?
我知道$a =& $b
assigns$a
作为参考,$b
并且我已经阅读了一些关于它的答案,但没有人提供真正有用的示例用法,包括:PHP 中的“=&”和“&=”运算符是什么意思?
任何人都可以提供一个最小的例子来展示如何=&
在 PHP 中有用吗?为什么有人想为一个变量取两个名字?
真正有用的例子是修改树状结构:
假设您有一个像“abc”这样的树路径和一个数组:
array(
'a' => array(
'b' => array(
'c' => array(),
),
),
)
并且您需要在最深的元素中插入一个新值。你最终可能会得到类似的东西(未经测试,仅用于演示目的):
$parts = explode('.', $path);
$node = &$tree;
foreach ($parts as $part) {
if (isset($node[$part])) {
$node = &$node[$part];
} else {
$node = null;
break;
}
}
if (!is_null($node)) {
$node[] = 'new value';
}
这是一个非常简单的例子。$var1
您正在分配to的引用$var2
,因此当您更改时$var2
,$var1
值会更改。
<?php
$var1 = 10;
$var2 = 20;
$var2 = &$var1;
$var2 = 200;
echo $var1; // 200;
假设一些用户定义的函数操作一个字符串:
function test($string){
$string.='bar';
return $string;
}
在这种情况下,您必须将函数的返回归因于变量:
$foo='foo';
$foo=test($foo);
通过引用传递变量可以消除一些代码:
function test(&$string){
$string.='bar';
}
$foo='foo';
test($foo);
就像,例如,原生settype
作品。查看手册中的 & 符号。