引用
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"];
?>