php: 传址引用

如果在参数变量前加上“&”,则它将被作为引用传递。
虽然可以像全局变量一样使用,但可读性会变差。

 

引用值

function increment(&$var)
{
    $var++;
}

$a = 0;
increment($a);
echo $a; // 1

increment($a);
echo $a; //2

还可以将函数作为引用传递

function increment(&$var)
{
    $var++;
    return $var;
}

function &reference()
{
    $a = 0;
    return $a;
}

$a = increment(reference());
echo $a; // 1

关于数组和对象的引用

有点有趣。
虽然无法引用数组,但似乎可以传递引用对象。

function increment($arr)
{
    foreach ($arr as &$i) {
        $i++;
    }
}

$arr = [1,2,3,4,5];
increment($arr);
print_r($arr); // [1,2,3,4,5]

$obj = (object)$arr;
increment($obj);
print_r($obj); // [2,3,4,5,6]
广告
将在 10 秒后关闭
bannerAds