Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung des Wissens über PHP-Referenzvariablen
Dieser Artikel stellt hauptsächlich das detaillierte Wissen über PHP-Referenzvariablen vor. Jetzt kann ich es mit Ihnen teilen.
Konzept: Referenz in PHP bedeutet, auf denselben Variableninhalt mit unterschiedlichen Namen zuzugreifen
Definitionsmethode: PHP verwendet '&; 'Referenzvariablen definieren;
Wenn keine Referenzen verwendet werden, verwenden Variablen einen Copy-on-Write-Mechanismus (COW): Eine Kopie des Speichers wird zur Änderung kopiert Schreiben, zum Beispiel
//定义一个变量 $a = range(0,1000); var_dump(memory_get_usage()); //打印内存使用量 //定义一个变量b $b = $a; //此时$b和$a 指向同一个内存空间 var_dump(memory_get_usage()); //当a或b发生写入时,才会复制一块内存进行修改 $a = range(0,1000); var_dump(memory_get_usage());
Laufergebnisse: Die Speichernutzung war beim ersten und zweiten Drucken ähnlich, beim dritten Mal gab es jedoch eine signifikante Änderung, was darauf hinweist, dass bei der Ausführung von a Beim Schreiben des Vorgangs ist die Speichernutzung beim Kopieren aufgetreten.
Bei Verwendung einer Referenz zeigt die Variable auf denselben Speicherplatz und ändert sich währenddessen nicht Schreibvorgang.
//定义一个变量 $a = range(0,1000); var_dump(memory_get_usage()); //打印内存使用量 //定义一个变量b $b = &$a; //将a的空间赋值给b,a与b指向同一空间 var_dump(memory_get_usage()); //当a或b发生写入时,内存不会发生复制 $a = range(0,1000); var_dump(memory_get_usage());
Betriebsergebnisse: Der Speicher hat sich nicht wesentlich geändert
Überprüft durch den zval-Variablencontainer
//通过zval变量容器打印 $a = range(0,3); xdebug_debug_zval('a');//打印 指向内存空间的变量数,和是否被引用 $c =&$a; xdebug_debug_zval('a'); $c = range(0,3); xdebug_debug_zval('a');
Laufergebnisse:
Beim Schreiben in c gibt es immer noch zwei Variablen, die auf den Speicher verweisen, und es findet kein Copy-on-Write statt
unset löscht nur die Referenz und zerstört nicht den Raum
In PHP wird das Objekt selbst übergeben durch Referenz und erfordert keine Referenzsymbole
class Person{ public $name = "zhangsan"; } $p1 = new Person(); xdebug_debug_zval('p1'); $p2 = $p1; xdebug_debug_zval('p1'); $p2->name = "lesi"; xdebug_debug_zval('p1');
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Wissens über PHP-Referenzvariablen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!