Heim > Artikel > Backend-Entwicklung > Die Rolle des &-Symbols in PHP – Variablenreferenz, Funktionsreferenz, Objektreferenz
PHP-Referenz (d. h. Hinzufügen eines kaufmännischen Und-Zeichens vor einer Variablen, Funktion, einem Objekt usw.) // Das Wichtigste ist, die referenzierte Variable zu löschen. Es ist nur so, dass auf die referenzierte Variable nicht zugegriffen werden kann Der Inhalt wird nicht zerstört. Die Bedeutung von Referenzen in PHP ist: Verschiedene Namen greifen auf denselben Variableninhalt zu der gleiche Inhalt
<?php$a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG"; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG ?>
Es ist zu beachten, dass bei Verwendung von test(1); ein Fehler auftritt: PHP schreibt das vor Die übergebene Referenz darf keine Konstante sein (siehe Fehlermeldung).
<?phpfunction test(&$a){ $a=$a+100; } $b=1; echo $b;//输出1 test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 echo "<br>"; echo $b;//输出101?>Funktionsreferenz kehrt zurück
Schauen wir uns zuerst den Code an
Die folgende Erklärung: Auf diese Weise $ a Was =test(); tatsächlich zurückgibt, ist kein Unterschied zu einem gewöhnlichen Funktionsaufruf. Der Grund: Die Regelung von PHP schreibt vor, dass das, was von $a=&test(); zurückgegeben wird eine Funktionsreferenz. Was ist eine Referenzrückgabe? (Im PHP-Handbuch heißt es: Referenzrückgabe wird verwendet, wenn Sie eine Funktion verwenden möchten, um herauszufinden, an welche Variable die Referenz gebunden werden soll.) Dieser Unsinn hat mich lange nicht verstehen lassen Zeit
<?phpfunction &test(){ static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } }$a=test();//这条语句会输出 $b的值 为1 $a=5; $a=test();//这条语句会输出 $b的值 为2$a=&test();//这条语句会输出 $b的值 为3 $a=5; $a=test();//这条语句会输出 $b的值 为6?>
Wenn eine Funktion über $a=&test() aufgerufen wird, besteht ihre Funktion darin, die Speicheradresse der $b-Variablen in
return $b
auch der Wert von $b, sodass nach der Ausführung von $a=&test(); $a=5; , der Wert von $b wird 5Die statischen Variablen werden hier verwendet, um jedem die Referenzrückgabe der Funktion verständlich zu machen. Tatsächlich wird die Referenzrückgabe der Funktion hauptsächlich in Objekten verwendet Objects Quote
Der obige Code ist der laufende Effekt in PHP5
In PHP5 das Kopieren von Objekten wird durch Referenzen erreicht
<?phpclass a{ var $abc="ABC"; } $b=new a; $c=$b; echo $b->abc;//这里输出ABC echo $c->abc;//这里输出ABC $b->abc="DEF"; echo $c->abc;//这里输出DEF?>. In der obigen Spalte ist $b=new a; $c=$b; eigentlich äquivalent zu $b=new $c=&$b; Ich möchte ein Objekt erstellen. Eine Kopie des Originalobjekts und hoffe, dass Änderungen am Originalobjekt keine Auswirkungen auf die Kopie haben. Zu diesem Zweck definiert PHP eine spezielle Methode namens __clone.
Die Rolle der Referenz Wenn das Programm relativ groß ist, viele Variablen auf dasselbe Objekt verweisen und Sie das Objekt nach der Verwendung manuell löschen möchten, empfehle ich persönlich die Verwendung der Methode „&“ und anschließend die Verwendung von $var= Null, um es zu löschen. In anderen Fällen wird die Standardmethode „php5“ verwendet. Außerdem wird für die Übertragung großer Arrays die Verwendung der „&“-Methode empfohlen.
Referenz aufheben Wenn Sie eine Referenz aufheben, brechen Sie einfach die Bindung zwischen dem Variablennamen und dem Variableninhalt auf. Dies bedeutet nicht, dass die Variableninhalte zerstört werden. Zum Beispiel:
2: Wenn Sie den folgenden Code zum obigen Code hinzufügen [php] $a="EFG" [/php] Da die Daten im Speicher, auf die $a und $b zeigen, neu geschrieben werden, ist dies der Fall Zu diesem Zeitpunkt ermittelt und erstellt der Zend-Kern automatisch eine Datenkopie von $a für $b und beantragt erneut ein Stück Speicher zur Speicherung
Das obige ist der detaillierte Inhalt vonDie Rolle des &-Symbols in PHP – Variablenreferenz, Funktionsreferenz, Objektreferenz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!