Heim >Backend-Entwicklung >PHP-Tutorial >Erläuterung der Wert- und Referenzübergabe in PHP

Erläuterung der Wert- und Referenzübergabe in PHP

小云云
小云云Original
2018-03-29 10:03:381359Durchsuche

Dieser Artikel teilt Ihnen hauptsächlich die Erklärung der Wertübertragung und Referenz in PHP mit. Ich hoffe, dass er allen helfen kann.

Einführung:

Jede PHP-Variable existiert in einem Variablencontainer namens "zval". Ein zval-Variablencontainer enthält zusätzlich zum Typ und Wert der Variablen auch 两个字节 zusätzliche Informationen. Das erste ist "is_ref", ein bool值, mit dem ermittelt wird, ob diese Variable zu 引用集合 (Referenzsatz) gehört. Durch dieses Byte kann die PHP-Engine gewöhnliche Variablen von Referenzvariablen unterscheiden. Da PHP Benutzern die Verwendung benutzerdefinierter Referenzen durch die Verwendung von & ermöglicht, gibt es auch ein 内部引用计数机制 im zval-Variablencontainer, um die Speichernutzung zu optimieren. Das zweite Byte ist "refcount" und wird verwendet, um die Anzahl der Variablen (auch Symbole genannt) im zval-Variablencontainer 指向 darzustellen. Wenn der Wert von "refcount" 1 ist, ist der Wert von „is_ref“ immer FALSE.

Beispiel:

<?php$a = 10;
//将常量值赋给变量,会为a分配内存空间$b = $a;
//变量赋值给变量,给b分配了内存空间,并将a变量的类型和值复制一份存储到b的存储空间 $c = &$a;
//引用是不会为c分配空间的,c和a是共用一份内存空间数据。

PHP wird sein a Wenn eine Variable einer neuen Variablen zugewiesen wird, wird der neuen Variablen nicht sofort Speicherplatz zugewiesen, sondern es wird ein Verweis auf den Speicherplatz hinzugefügt. Wenn Änderungen an der ursprünglichen oder der neuen Variablen vorgenommen werden, wird ein Speicherplatz für die neue Variable zugewiesen.

Verwandte Empfehlungen:

Was ist der Unterschied zwischen der gewöhnlichen Wertübergabe und der Referenzwertübergabe in PHP-Funktionen

Das obige ist der detaillierte Inhalt vonErläuterung der Wert- und Referenzübergabe in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn