In PHP übergibt das &-Symbol eine Variablenreferenz anstelle einer Kopie. Referenz bedeutet, dass auf denselben Variableninhalt mit unterschiedlichen Namen zugegriffen wird. Dies ähnelt nicht den Zeigern von C, bei denen es sich um Symboltabellen-Aliase handelt. Beachten Sie, dass in PHP Variablenname und Variableninhalt unterschiedlich sind, sodass derselbe Inhalt unterschiedliche Namen haben kann. Die engste Analogie sind die Dateinamen von Unix und die Dateien selbst – die Variablennamen sind die Verzeichniseinträge und die Variableninhalte sind die Dateien selbst. Referenzen können als enge Verbindungen im Unix--Dateisystem betrachtet werden.
PHP-Referenzen ermöglichen es Ihnen, zwei Variablen zu verwenden, um auf denselben Inhalt zu verweisen. Das heißt, wenn Sie Folgendes tun:
<?php $a =&$b ?>
bedeutet dies, dass $a und $b auf dieselbe Variable verweisen.
Hinweis: $a und $b sind hier genau gleich. Das bedeutet nicht, dass $a auf $b zeigt oder umgekehrt, sondern dass $a und $b auf die gleiche Stelle zeigen.
Die gleiche Syntax kann in Funktionen verwendet werden, die Referenzen zurückgeben, und im neuen Operator (PHP 4.0.4 und höher):
<?php $bar =& new fooclass(); $foo =& find_var ($bar); ?>
Hinweis: Es wird kein &-Operator als Zeichen verwendet bewirkt, dass eine Kopie des Objekts erstellt wird. Wenn Sie $this in einer Klasse verwenden, gilt es für die aktuelle Instanz dieser Klasse. Eine Zuweisung ohne & kopiert die Instanz (z. B. ein Objekt) und $this wird auf die Kopie angewendet, was nicht immer das gewünschte Ergebnis ist. Aufgrund von Leistungs- und Speicherverbrauchsproblemen möchten Sie normalerweise nur an einer Instanz arbeiten.
Obwohl Sie den @-Operator verwenden können, um alle Fehlermeldungen in einem Konstruktor auszuschalten, beispielsweise mit @new, hat dies keine Auswirkung, wenn Sie eine &new-Anweisung verwenden. Dies ist eine Einschränkung der Zend-Engine und führt zu einem Parsing-Fehler.
Das zweite, was eine Referenz bewirkt, ist die Übergabe einer Variablen als Referenz. Dies wird erreicht, indem eine lokale Variable innerhalb der Funktion erstellt wird und diese Variable auf denselben Inhalt im aufrufenden Bereich verweist. Beispiel:
<?php function foo (&$var) { $var++; } $a=5; foo ($a); ?>
ändert $a in 6. Dies liegt daran, dass in der Funktion foo die Variable $var auf dasselbe zeigt wie $a. Eine ausführlichere Erklärung finden Sie unter „Übergabe als Referenz“.
Die dritte Funktion einer Referenz ist die Referenzrückgabe.
Was bedeutet das Hinzufügen des kaufmännischen Und-Zeichens vor der PHP-Funktion ? Nachfolgend finden Sie zunächst zwei Demonstrationscodes und anschließend Erläuterungen.
function &chhua() { static $b="www.php.cn";//申明一个静态变量 $b=$b."WEB开发"; echo $b; return $b; } $a=chhua();//这条语句会输出 $b的值 为“www.php.cnWEB开发” $a="PHP"; echo "<Br>"; $a=chhua();//这条语 句会输出 $b的值 为“www.php.cnWEB开发WEB开发” echo "<Br>"; $a=&chhua();//这条语句会输出 $b的值 为“www.php.cnWEB开发WEB开发WEB开发” echo "<Br>"; $a="JS"; $a=chhua(); //这条语句会输出 $b的值 为"JSWEB开发" 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
Lassen Sie uns die zweite Funktion erklären.
Was Sie auf diese Weise erhalten, ist $a=test(); eigentlich keine Referenzrückgabe der Funktion. Es unterscheidet sich nicht von einem gewöhnlichen Funktionsaufruf.
Was den Grund betrifft: Dies ist der Regulierung von PHP
php Es ist festgelegt, dass das, was durch $a=&test(); erhalten wird, die Referenzrückgabe der Funktion ist.
Was eine Referenzrückgabe ist (PHP-Handbuch sagt: Referenzrückgabe wird verwendet, wenn die Funktion findet, an welche Variable die Referenz gebunden werden soll )
Verwenden Sie das obige Beispiel zur Erklärung und rufen Sie die Funktion im
$a auf Die Methode =test() weist nur den Wert der Funktion $a zu. Das ist alles, und alle Änderungen an $a wirken sich nicht auf $b in der Funktion aus.
Und wenn die Funktion über $a=&test() aufgerufen wird, Seine Funktion besteht darin, den Speicher der $b-Variablen in $b zurückzugeben. Die Adresse und die Speicheradresse der $a-Variablen
zeigen auf denselben Ort. Das heißt, der Effekt ist äquivalent zu diesem ($a =&b;). Wenn Sie also den Wert von $a ändern, ändert sich auch der Wert von $b. Nach der Ausführung von:
$a=&test(); wird der Wert von $b zu 5.
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Bedeutung und Funktion des Hinzufügens des kaufmännischen Und-Zeichens vor dem PHP-Funktionsnamen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!