refcount : 一个变量在指向内存空间
is_ref : 是否引用 , 0为false , 没有引用
$a = range(0,3) ;
xdebug_debug_zval('a'); // 这里需要安装xdebug才能打印
--------------------------------------------------------------------------------------------------
$a = range(0,3) ;
xdebug_debug_zval('a'); // 这里需要安装xdebug才能打印
$b = $a;
xdebug_debug_zval('a'); // 打印a
第二次打印的a 有两个变量在指向这个变量内存 , 由于不是引用 , 所以is_ref=0
--------------------------------------------------------------------------------------------------------------
$a = range(0,3) ;
xdebug_debug_zval('a'); // 这里需要安装xdebug才能打印
$b = $a;
xdebug_debug_zval('a'); // 打印a
$a = range(0,3) ;
xdebug_debug_zval('a'); // 打印a
a做了写操作, a做了COW机制 , 单独复制出一份内存空间做了修改 , 所以指向内存空间的变量变回了1
---------------------------------------------------------------------------------------------------------------------
$a = range(0,3) ;
xdebug_debug_zval('a'); // 这里需要安装xdebug才能打印
$b = &$a;
xdebug_debug_zval('a'); // 打印a
$a = range(0,3) ;
xdebug_debug_zval('a'); // 打印a
由于b是引用的a , b和a永远指向同一个内存空间 , 所以refcount永远为2 , 由于是引用关系 , 所以打印a时is_ref = 1
面试时如果有问到内存引用 , 可通过画图分析法来模拟内存使用情况