变量引用自身
我读了很多关于如何在机器Zend内部构造变量的文章,发现了一件我无法解释的有趣事情:
$int = 100;
xdebug_debug_zval('int'); /// int:(refcount=1,is_ref=0),int 100
$int = &$int;
xdebug_debug_zval('int'); /// int:(refcount=1,is_ref=1),int 100
事实证明,我们正在创建与自身的链接本身?这怎么可能?
从我所知道的清晰信息:
通常仅当容器引用 zval 两个或多个硬链接的变量时。is_ref = 1
refcount
- 是引用同一 zval 容器的变量数,但不同值的 refcount 与 和 一起工作。is_ref = 0
is_ref = 1
如果 ,并且在创建硬链接时,我们会得到一个新的 zval 容器,如果我们按值进行赋值 - 则不会创建新的 zval 容器。is_ref = 0
refcount > 1
如果 ,并且在创建硬链接时未创建新的 zval,则使用旧 zval。如果我们不创建硬链接,而是按值分配 - 这意味着我们创建了新的zval容器。is_ref = 1
refcount > 1
P.S 我写这篇文章是为了表明理解我问并说明为什么我不理解我上面写的代码的行为