php變數的引用計數是什麼?首先來看php變數的底層結構:
<code>typedef <span>struct</span> _zval_struct zval; <span>struct</span> _zval_struct { zvalue_value <span>value</span>; <span>//存放value</span> zend_uint refcount__gc; <span>//引用计数</span> zend_uchar type; <span>//判断类型</span> zend_uchar is_ref__gc; <span>//是否被引用</span> }; </code>
當我們在php程式中宣告一個變量,zend引擎會實例化一個zval的結構體,這個結構體有四個成員變數。其中type用來判斷這個變數是什麼類型的;value用來存放實際的數據,其實value也是一個結構體,具體這裡就不細講了。今天重點來講:refcount_gc和is_ref_gc這兩個欄位的用處。假設有這樣一段程式碼:
<code><span>$a</span> = <span>123</span>; <span>$b</span> = <span>$a</span>; </code>
由於一個簡單的int型變量,php都要實例化一個結構體出來,像上面這種情況,其實