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; //表示是否为引用 };
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;
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!