Was sind PHP-Referenzvariablen? Wie definiere ich Referenzvariablen? In diesem Artikel werden die grundlegenden Konzepte und Arbeitsmethoden von Referenzvariablen in PHP aus dem Speicherbereich sowie ein allgemeines Beispiel kurz vorgestellt.
Was ist eine Referenzvariable? Welche Symbole werden in PHP verwendet, um Referenzvariablen zu definieren?
Verschiedene Namen greifen auf denselben Variableninhalt zu, verwenden & zum Ausdruck bringen.
COW (Copy on Write)
Eine gängige Methode zur Speicheroptimierung. Diese Methode wird auch in PHP zur Speicheroptimierung verwendet.
Kopieren beim Schreiben, d. h. nur wenn eine oder mehrere Variablen geschrieben werden, wird eine Kopie des Speichers kopiert und sein Inhalt wird geändert.
Verwenden Sie „memory_get_usage()“ in PHP, um Speicheränderungen zu beobachten
Unbenutzt & (Referenzvariable)
$a = range(0,1000); var_dump(memory_get_usage()); $b = $a;` var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
Laufergebnisse:
Es gibt keinen großen Unterschied in der Erinnerung zwischen dem ersten und dem zweiten Mal, aber beim dritten Mal gibt es einen großen Unterschied
Verwenden Sie &
$a = range(0,1000); var_dump(memory_get_usage()); $b = &$a; var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
Laufergebnisse:
bei Verwendung von Referenzpass- Parsing-Analyse nach Wertspeicher:
$a
belegt einen Speicherplatz im Speicher, wenn er zugewiesen wird, und wenn $b=&$a
, $b
zeigt Wenn sich $a
ändert, folgt der von $b
belegte Speicherplatz der Änderung von $a
unset()
und wird nur dereferenziert und nicht zerstört der Raum
$a=1; $b=&$a; unset($b); echo $a;
Ausgabeergebnis: 1
Speicherplatzanalyse:
$ a wird $b=& zugewiesen. Nachdem $a, $a und $b direkt in denselben Speicherbereich verschoben wurden ($b), wird die Referenz von $b auf $a aufgehoben, sodass $b nicht mehr darauf zeigt der Speicherplatz von $a
Das Objekt selbst wird als Referenz übergeben
class Person { public $name="zhangsan"; } $p1 =new Person; xdebug_debug_zval('p1'); $p2 =$p1; xdebug_debug_zval('p1'); $p2->name="lisi"; xdebug_debug_zval('p1');
Laufende Ergebnisse:
Ergebnisanalyse:
Nachdem das Objekt instanziiert und als Referenz übergeben wurde$p1
$p2
zeigt immer auf der gleiche Speicherplatz
<?php $data = ['a', 'b', 'c']; foreach($data as $key => $val) { $val = &$data[$key]; } var_dump($data);
Write Was ist die Ausgabe des obigen Programms?
Welchen Wert hat die Variable $data nach dem Ende jeder Schleife, wenn das Programm ausgeführt wird?
Welchen Wert hat die Variable $data nach Abschluss der Programmausführung?
Speicheränderungen und -analyse:
Verwandte Empfehlungen:
php-Variablenreferenz und Objektreferenz Detaillierte Einführung_PHP-Tutorial
Detaillierte Einführung in PHP-Variablenreferenzen und Objektreferenzen
Das obige ist der detaillierte Inhalt vonWas sind PHP-Referenzvariablen? Beispielerklärung von PHP-Referenzvariablen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!