眾所周知,PHP是不支援指標的,但是如果希望兩個變數同時指向相同記憶體區塊怎麼辦呢?為了解決這個問題,PHP內核裡使用了引用計數器。
上篇部落格文章介紹了PHP變數在內核中的儲存方式了,zval結構中下面兩個成員變數用來引用計數器:
<code>is_ref BOOL值,标识变量是否是引用集合。 refcount 计算指向引用集合的变量个数。 </code>
看下面的php程式碼
<code><?php $a = "this is a"; ?> </code>
一個zval結構的實體稱為zval容器。在php語言層建立變數就會相應地在php核心中建立一個zval容器。因為上面的程式碼創建了一個變數$a,所以在php核心中會建立一個zval容器;又因為這個變數不是一個引用,所以zval容器的is_ref等於FALSE,並且refcount等於1.
再看下面的程式碼
<code><?php $a = "this is a"; $b=$a; ?> </code>
上面這段程式碼建立了兩個變數