引用主要有两个作用:
对于需要改变源数据的情况,通常不会有太大问题,只要在传递参数的时候在变量前面加上一个 '&' 号就可以了。比如:
$v = 123; function f_t(&$r){ $r++; } f_t($v); echo $v; // 此时 $v = 124
另外很多时候,我们想起引用,是因为我们想节省变量复制(内存复制)的开销。比如:
$s = str_repeat('x', 1024*1024); // 1 MByte function f_t($s){ return preg_match('/\d+/', $s); }
因为函数 f_t没有使用按引用传递,我们担心字符串$s是不是被复制了一次。事实上,这种担心可能是多余的。因为PHP也采用了类似与 COW(Copy on Write)的技术。