有关PHP引用的问题

参考:PHP中的引用传递不仅限于函数参数- cloned.log。

以下是三个重点:
– 函数/方法参数的传递引用
– 赋值的引用赋值
– 函数/方法的引用返回

引用参数传递

对我来说,我经常忘记这一点。不管是作为临时参数使用&还是作为实际参数使用&,都感觉非常复杂。

$v = "default";
rewrite($v);
print $v;

function rewrite(&$arg) {
    $arg = "HelloWorld";
}

只需要一种选择,用中文将以下内容进行释义:
函数/方法的引用返回

在这个领域,动态编程等技术悄无声息地发挥作用。

$hoge = "this is hoge";

function &fuga() {
    return $this->value;
}

$fuga =& fuga();
$fuga = "this is fuga";
var_dump($hoge);//"this is fuga";

函数名称和返回值获取都需要使用&,在类中可变的属性部分添加访问器等等这样的情况非常方便。

我认为,当接收时将其拷贝,去掉引用可能会很方便。

以参照为基准

最后,可以通过赋值来传递引用。但是,我认为不太常用。

$hoge = "this is hoge";
$fuga =& $hoge;
$fuga = "this is fuga";
var_dump($fuga);

顺便说一句,foreach之类的也可以通过引用接收。当需要修改传递的值时,像$arr[$key]这样的操作可能会很频繁,但是这样$value的一侧会变得有点飘忽。光为了这个而专门使用array_keys之类的方法也有点麻烦。

foreach($arr as $key=>&$value)
{
    $value = "new value";
    //$arr[$key] = "new value"; // これだと$valueが浮く
}

bannerAds