变量引用是啥?
多个变量同时使用一个内存空间,称为变量的引用。
制作一个变量引用例子
$a = range(1,10);
$b = &$a;
$c = $b;
xdebug_debug_zval('b');
//b: (refcount=2, is_ref=1)=array (0 => (refcount=0, is_ref=0)=1, 1 => (refcount=0, is_ref=0)=2, 2 => (refcount=0, is_ref=0)=3, 3 => (refcount=0, is_ref=0)=4, 4 => (refcount=0, is_ref=0)=5, 5 => (refcount=0, is_ref=0)=6, 6 => (refcount=0, is_ref=0)=7, 7 => (refcount=0, is_ref=0)=8, 8 => (refcount=0, is_ref=0)=9, 9 => (refcount=0, is_ref=0)=10)
refcount 计数被引用了2次。is_ref 是否是引用的 1/0
书写引用变量可以见减少内存占用。
摘一段laravel 代码
function(array $event) use (&$commands) {
$commands[] = $event['started']->getCommandName();
}
通过引用传参,达到闭包内数据修改,在包外正常使用处理过的数据。因为使用的同一块内存地址