引用

PHP的引用意味着我们可以用不同的名字来访问同样的内容。

指针也是一样的,可以有不同名字的指针,访问同样的内容。

但是,PHP的引用并不是指针。引用并不能访问内存。

实际上,我们可以把引用理解为Unix系统的硬链接

使用

<?php

$a = 'Hello world';
$b = &$a;

$a$b在这里是完全相同的,这并不是$a指向了$b或者相反,而是$a$b指向了同一个地方。

如果具有引用的数组被拷贝,其值不会解除引用。对于数组传值给函数也是如此。

如果对一个未定义的变量进行引用赋值、引用参数传递或引用返回,则会自动创建该变量。但是值会是null

除此之外,引用还可以用来做两件事:

  • 引用传递变量

  • 引用返回

引用返回

引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。

<?php
class foo {
    public $value = 42;

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

$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myValue;                // prints the new value of $obj->value, i.e. 2.
?>

Note: 和参数传递不同,这里必须在两个地方都用 & 符号——指出返回的是一个引用,而不是通常的一个拷贝,同样也指出 $myValue 是作为引用的绑定,而不是通常的赋值。

定位

许多 PHP 的语法结构是通过引用机制实现的.

  • global 引用

  • $this

当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。

<?php
    $var =& $GLOBALS["var"];
?>

niecprea
871 声望54 粉丝

Hello world!