1、What Reference Are
PHP中的引用,用于使用不同的名字来访问同一个变量内容。引用不像C语言中的指针,不是具体的内存地址,不能进行指针的算术运算。
引用只是symbol table alias。
2、What Reference Do
引用主要用在3个地方:
assigning by reference
<?php
$a =& $b;
?>
这个赋值语句运行之后,a和b指向相同的内容。
passing by reference
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
?>
传递给foo函数后,a和var指向相同的内容,因此a的值调用之后为6.
return by reference
<?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.
?>
返回引用也是一样的道理。
3、unsetting reference
<?php
$a = 1;
$b =& $a;
unset($a);
?>
unset之后,b依然指向1这个值。类似于unix中的unlink。