Practical PHP Programming

引用

当你使用=操作符的时候,PHP进行“复制相等”的操作,就是将操作数二里面的值复制给操作数一。大部分情况下是没有问题的,但是当你将操作数二中的值进行更改之后,操作数一却并不会随之改变。

在这种情况下,引用的作用就出来了——引用允许你将两个变量指向相同的数据。使用引用,将操作数一设置为操作数二是瞬间就完成的。而且,由于两个变量指向相同的数据,你随便改变其中一个,另一个也随之改变。通过引用进行赋值,你需要在等号后面加上&符号,也就是使用=&。来看一下例子:

<?php
    $a = 10;
    $b =& $a;
    print $a;
    print $b;
    ++$a;
    print $a;
    print $b;
    ++$b;
    print $a;
    print $b;
?>

这里,我们用引用操作将$b$a只想同样的值,通过前两个打印语句可以看到相等。在$a进行自加操作之后,再次打印两个变量的值,两个都是11了。最后,为了验证引用是双向的,将$b进行自加操作,输出两个变量的值,二者都再次变化了。

通过上面的例子,用简单的整型来演示了引用,这个数据量太小,因此引用赋值也不比复制赋值更快。如果你想达到“两个变量一个值”,通过引用来赋值是很不错的。

对于函数而言,引用允许函数像一个变量一样使用,而不是复制,这个以后再说。

在PHP当中,对象也通常通过引用来进行复制,讲到的时候再进行讨论。