Heim > Backend-Entwicklung > PHP-Tutorial > Was ist der Unterschied zwischen veränderlichen Variablen und Referenzzuweisung in PHP?

Was ist der Unterschied zwischen veränderlichen Variablen und Referenzzuweisung in PHP?

怪我咯
Freigeben: 2023-03-10 21:00:01
Original
1251 Leute haben es durchsucht

Lassen Sie es mich aus der Perspektive des PHP-Kernels erklären. Sie können es vollständig verstehen, wenn Sie es in der Struktur zval verstehen Objekt und die darin enthaltenen Mitgliedsvariablen sind alle
Attribute der Klasse , also verstehen wir es zunächst so. Die zval-Struktur lautet wie folgt: Zum Beispiel PHP-Code lautet wie folgt:

struct _zval_struct {
zvalue_value value; // 存储变量的值
zend_uint refcountgc; //表示引用计数 默认为:1
zend_uchar type; // 变量具体的类型
zend_uchar is_refgc; //表示是否为引用
};
Nach dem Login kopieren

Zu diesem Zeitpunkt hat $b keine Referenz, aber der Wert von $a wird $b zugewiesen, dann der refcountgc im zval Die Struktur wird zu 2 und is_refgc ist immer noch falsch, was darauf hinweist, dass nicht darauf verwiesen wird, da der Kernel $a einen Speicherplatz geöffnet hat. Wenn $a $b zugewiesen wird, zeigt der Wert von $b nur auf $a, this erspart das erneute Öffnen eines Speicherbereichs, aber wenn der Wert von $b geändert wird (der Wert von $a ändert sich nicht), öffnet $b einen neuen Speicherbereich. Dies ist der sogenannte Kopierbereich. on-write , Wie die PHP-Variable
im Kernel gespeichert wird, lassen Sie uns über die folgende Referenz sprechen:

$a = 10;
$b = $a;
Nach dem Login kopieren

Zu diesem Zeitpunkt speichert die Struktur $a in Kernel is_refgc ist als wahr markiert. Es stellt eine Referenz dar, sodass $a und $b beide auf dieselbe Speicheradresse verweisen. Wenn $b=20, wird $a ebenfalls zu 20

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen veränderlichen Variablen und Referenzzuweisung in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage