我讀了很多關於如何構建變量在機器內部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
事實證明,我們正在創建鏈接本身?這怎麼可能?從我所知道的
清除信息:
按規定is_ref = 1
只有當容器是指硬鏈接的zval的兩個或多個變量。
refcount
- 是變量的數量指的是同一的zval容器,但不同的是,引用計數爲不同的作品與is_ref = 0
和is_ref = 1
。
如果is_ref = 0
和refcount > 1
創建硬鏈接時,我們會得到一個新的zval容器,如果我們通過值進行賦值 - 不會創建新的zval容器。
如果is_ref = 1
和refcount > 1
在創建硬鏈接時未創建新的zval,則使用舊的。如果我們不創建硬鏈接,但是通過值賦值 - 這意味着我們創建了新的zval容器。
PS我爲了表明明白,我只要求說明爲什麼我不明白,我在上面
@RyanVincent這可能嗎?我怎樣才能使硬鏈接到相同的變量,即它本身 – MaximPro
@RyanVincent我不瞭解你。我知道變量擁有一個Zval容器 – MaximPro
也許有趣嗎? [PHP5參考可視化解釋](http://www.phpinsider.com/download/PHP5RefsExplained.pdf)。後來更容易理解。 –