“=&”的真实例子用法

时间:2013-10-11 02:17:37

标签: php operators

我知道$a =& $b指定$a作为对$b的引用,我已经阅读了一些有关它的答案,但没有人提供真正有用的示例用法包括:What do the "=&" and "&=" operators in PHP mean?

任何人都可以提供一个最小的例子来展示=&在PHP中的用途吗?为什么有人想为一个变量设两个名字?

3 个答案:

答案 0 :(得分:0)

这是一个非常简单的例子。您将$var1的引用分配给$var2,因此当您更改$var2时,$var1值会发生变化。

<?php
$var1 = 10;
$var2 = 20;
$var2 = &$var1;
$var2 = 200;
echo $var1; // 200;

答案 1 :(得分:0)

假设某些用户定义的函数操纵字符串:

function test($string){
    $string.='bar';
    return $string;
}

在这种情况下,您必须将函数的返回归属于变量:

$foo='foo';
$foo=test($foo);

通过引用传递变量可以消除一些代码:

function test(&$string){
    $string.='bar';
}

$foo='foo';
test($foo);

就像,例如,原生settype有效。查看manual上的&符号。

答案 2 :(得分:0)

真正有用的例子是修改类似树的结构:

假设你有一个像'a.b.c'这样的树路径和一个数组:

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';
}