Wie wir alle wissen, unterstützt PHP keine Zeiger, aber was ist, wenn zwei Variablen gleichzeitig auf denselben Speicherblock zeigen sollen? Um dieses Problem zu lösen, werden im PHP-Kernel Referenzzähler verwendet.
Im vorherigen Blogbeitrag wurde vorgestellt, wie PHP-Variablen im Kernel gespeichert werden. Die folgenden zwei Mitgliedsvariablen in der zval-Struktur werden als Referenzzähler verwendet:
<code>is_ref BOOL值,标识变量是否是引用集合。 refcount 计算指向引用集合的变量个数。 </code>
Sehen Sie sich den folgenden PHP-Code an
<code><?php $a = "this is a"; ?> </code>
Eine Entität einer Zval-Struktur wird als Zval-Container bezeichnet. Durch das Erstellen einer Variablen in der PHP-Sprachebene wird entsprechend ein Zval-Container im PHP-Kernel erstellt. Da der obige Code eine Variable $a erstellt, wird ein zval-Container im PHP-Kernel erstellt. Da diese Variable keine Referenz ist, ist is_ref des zval-Containers gleich FALSE und der Refcount ist gleich 1.
Schauen Sie sich den Code unten an
<code><?php $a = "this is a"; $b=$a; ?> </code>
Der obige Code erstellt zwei Variablen
Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.
Das Obige stellt den Referenzzähler und das Copy-on-Write von PHP-Variablen vor, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.