zitiert in PHP bedeutet: Verschiedene Namen greifen auf denselben Variableninhalt zu. Es gibt Unterschiede zwischen PHP und Zeigern in der C-Sprache. Der Zeiger in der Sprache C speichert die Adresse, an der der Inhalt der Variablen im Speicher gespeichert ist. Werfen wir einen Blick auf PHP Quote (&)-Nutzung
Variablenreferenz
Die PHP-Referenz ermöglicht es Ihnen, zwei Variablen zum Zeigen zu verwenden zum gleichen Inhalt.
<?php $a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG"; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG ?>
Pass-by-Reference-Aufruf der Funktion
Ich werde nicht viel über den Pass-by-Reference-Aufruf sagen. Der Code ist direkt unten angegeben.
function test(&$a) { $a=$a+100; } $b=1; echo $b;//输出1 test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 echo "<br>"; echo $b;//输出101
Es ist zu beachten, dass bei Verwendung von test(1); ein Fehler auftritt.
Die Referenzrückgabe der Funktion
Sehen Sie sich die an Code zuerst
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
Erklärung unten:
Was Sie auf diese Weise erhalten: $a=test(); ist eigentlich keine Funktionsreferenzrückgabe. Es unterscheidet sich nicht von einem gewöhnlichen Funktionsaufruf Der Grund: Dies ist die Regulierung von PHP
PHP-Regulierung Was durch $a=&test(); erhalten wird, ist die Referenzrückgabe der Funktion
Was eine Referenzrückgabe ist (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.) Wenn es um das oben Gesagte geht.) Ich konnte diesen Unsinn lange Zeit nicht verstehen
Verwenden Sie das obige Beispiel, um es zu erklären dass der Aufruf einer Funktion mit $a=test() lediglich den Wert der Funktion $a zuweist und $ Alle an a vorgenommenen Änderungen keinen Einfluss auf $b
in der Funktion haben, wenn die Funktion über $a= aufgerufen wird &test(), seine Funktion besteht darin, die Speicheradresse der $b-Variablen in $b mit der $a-Variablen zu vergleichen. Die Speicheradresse zeigt auf dieselbe Stelle
, was den entsprechenden Effekt erzeugt ($a=&b;). ). Wenn Sie also den Wert von $a ändern, ändert sich auch der Wert von $b, sodass nach der Ausführung von
$a=&test(); $a=5;
Dies dient dem Verständnis für alle Die Referenzrückgabe der Funktion vor der Verwendung statischer Variablen. Tatsächlich wird die Referenzrückgabe der Funktion hauptsächlich im
Objekt
<?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 ?>
In PHP5 wird das Kopieren von Objekten durch Referenzen erreicht. In der obigen Spalte ist $b=new a; $c=$b; tatsächlich äquivalent zu $b=new $c=&$b;
Die Standardeinstellung in PHP5 ist, dass Objekte per Referenz aufgerufen werden 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 clone.
Die Rolle von Referenzen
Wenn das Programm vorhanden ist relativ groß, Referenzen Es gibt viele Variablen im selben Objekt, und Sie möchten es manuell löschen, nachdem Sie das Objekt verwendet haben. Persönlich wird empfohlen, die Methode „&“ zu verwenden und sie dann mit $var=null zu löschen 🎜>Andere
verwenden Sie die Standardmethode von PHP5. Darüber hinaus wird für die Übertragung großer Arrays in PHP5 empfohlen, die Methode „&“ zu verwenden, da dadurch Speicherplatz gespart wird. Referenz aufheben
Variablennamen
und dem Variableninhalt auf. Dies bedeutet nicht, dass die Variableninhalte zerstört werden. Beispiel:
<?php $a = 1; $b =& $a; unset ($a); ?>
Globale Referenz
Wenn Sie eine Variable mit globaler $var deklarieren, erstellen Sie tatsächlich eine Referenz auf die globale Variable. Das ist dasselbe wie:<?php $var =& $GLOBALS["var"]; ?>
$this
//Hier ist eine weitere kleine Episode
Laienhaft ausgedrückt
1: Wenn es den folgenden Code gibt
$a="ABC"; $b=$a;
$a="EFG";
Weil $a und $ Die Daten im Speicher, auf den b zeigt, müssen neu geschrieben werden. Zu diesem Zeitpunkt ermittelt und erstellt der Zend-Kern automatisch eine Datenkopie von $a für $b und beantragt erneut einen Speicherbereich.
Verwandte Empfehlungen:
Mehrere gängige Sitzungsfunktionen in PHP
Der Unterschied zwischen 0 und null in PHPDie vollständigste PHP-String-Das obige ist der detaillierte Inhalt vonVerwendung der PHP-Referenz (&).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!