Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Verwendung des Referenzsymbols (&) in PHP
Die Referenz von PHP besteht darin, das &-Symbol vor der Variablen, Funktion, dem Objekt usw. hinzuzufügen. Die Referenz in PHP bedeutet: Verschiedene Namen greifen auf denselben Variableninhalt zu. Im Folgenden finden Sie eine Einführung in die Verwendung der Referenz von PHP. Freunde, die es brauchen, können darauf verweisen. Es gibt einen Unterschied zwischen
und Zeigern in der C-Sprache. Der Zeiger in der Sprache C speichert einen Verweis auf die Adressvariable, wo der Inhalt der Variablen im Speicher gespeichert wird.
Der Verweis von PHP ermöglicht es Ihnen, zwei Variablen zu verwenden, um auf denselben Inhalt zu verweisen
$a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG"; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG
Pass-by-Address-Aufruf der Funktion
Ich werde nicht näher auf den Pass-by-Address-Aufruf eingehen
rrreeEs ist zu beachten, dass bei Verwendung von test(1); selbst über den Grund nachgedacht wird Die Referenzrückgabe der Funktion
Sehen Sie sich zuerst den Code an
<?php function test(&$a) { $a = $a + 100; } $b = 1; echo $b; //输出1 test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 echo "<br>"; echo $b; //输出101 ?>
Die folgende Erklärung:
In Auf diese Weise wird $a=test(); nicht tatsächlich durch einen Verweis auf die Funktion zurückgegeben, was sich von gewöhnlichen unterscheidet. Es gibt keinen Unterschied bei Funktionsaufrufen. Aus dem Grund: Dies ist die Regelung von PHP
erhalten wird. Was ist die Referenzrückgabe (im PHP-Handbuch heißt es: Referenzrückgabe wird verwendet, wenn Sie eine Funktion verwenden möchten, um herauszufinden, welche Variable die Referenz ist). sollte gebunden sein.) Dieser Unsinn hat mich lange Zeit unfähig gemacht, ihn zu verstehen
Verwenden Sie das obige Beispiel, um es zu erklären
Aufruf einer Funktion mit $a= test() weist nur den Wert der Funktion $a zu, und alle Änderungen an $a wirken sich nicht auf $b in der Funktion aus. Über die Methode $a=&test() wird eine Funktion aufgerufen, deren Funktion darin besteht, auf die Speicheradresse zu verweisen Die $b-Variable gibt $b und die Speicheradresse der $a-Variablen an dieselbe Stelle zurück, was das Äquivalent dieses Effekts erzeugt ($a=&b; ). Wenn man also den Wert von $a ändert, ändert sich auch der Wert von $b , also nach der Ausführung von
$a=5; Danach der Wert von $ b wird zu 5
Die statische Variable wird 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 🎜>
<?php function &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 ?>Der obige Code ist der Effekt der Ausführung in PHP5
In PHP5 wird das Kopieren von Objekten durch Referenzen implementiert. In der obigen Spalte ist $b=new a; $c=$b; eigentlich äquivalent zu $b=new $c=&$b; Möglicherweise möchten Sie eine Kopie eines Objekts erstellen und hoffen, dass Änderungen am Originalobjekt keine Auswirkungen auf die Kopie haben. Zu diesem Zweck definiert PHP eine spezielle Methode namens
referenzierte Funktion
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 dann die Methode $var =null zum Löschen verwenden. Außerdem wird für die Übertragung großer Arrays in PHP5 empfohlen, die Methode „&“ zu verwenden, da dies Speicherplatz spart .
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. Beispiel:
<?php class a { var $abc = "ABC"; } $b = new a; $c = $b; echo $b->abc; //这里输出ABC echo $c->abc; //这里输出ABC $b->abc = "DEF"; echo $c->abc; //这里输出DEF ?>
Globale Referenz
Wenn Sie eine Variable mit globalem $var deklarieren, erstellen Sie tatsächlich eine Referenz auf die globale Variable. Das ist dasselbe wie:
$a = 1; $b =& $a; unset ($a);
$this
In einer Methode eines Objekts ist $this immer eine Referenz auf das Objekt, das es aufruft.
//Hier ist noch eine kleine Episode
Die Zeigerfunktion (ähnlich dem Zeiger) der Adresse in PHP wird nicht vom Benutzer selbst implementiert, sondern von ihm Zend Core, die Referenz in PHP übernimmt das Prinzip „Copy-on-Write“, das heißt, solange keine Schreiboperation stattfindet, werden Variablen oder Objekte, die auf dieselbe Adresse zeigen, nicht kopiert.
Laienhaft ausgedrückt
1: Wenn es den folgenden Code gibt
$var =& $GLOBALS["var"];
Tatsächlich , zu diesem Zeitpunkt verweisen $a und $b beide auf dieselbe Speicheradresse, anstatt dass $a und $b unterschiedliche Speicher belegen 2: Wenn Sie den folgenden Code zum obigen Code hinzufügen
$a="ABC"; $b=$a;
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.
Verwandte Empfehlungen: PHPDer Vorteil des Hinzufügens eines Namespace besteht darin, das automatische Laden zu erleichtern
PHPFehlerstufeneinstellung und Prinzipanalyse
PHP-Flow-Control-Break-Anweisung
Continue-Anweisung für PHP-Flusskontrolle
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung des Referenzsymbols (&) in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!