Heim > Artikel > Backend-Entwicklung > Wie verwende ich das Referenz-kaufmännische Und? Ausführliche Erläuterung von PHP- und Symbolverwendungsbeispielen
Was ist eine PHP-Referenz?
zitiert in PHP bedeutet: Verschiedene Namen greifen auf denselben VariablenInhalt. PHP-Referenz (d. h. Hinzufügen eines kaufmännischen Und-Zeichens vor Variablen oder Funktionen, Objekten usw.). Sieht es nicht so aus, als würden Sie Bestellungen entgegennehmen? Lassen Sie es uns unten erklären: 1 🎜>PHP
-Referenzen ermöglichen die Verwendung von zwei Variablen, um auf denselben Inhalt zu verweisenBeispiel 1:
Beispiel 2:
Aus den obigen beiden Beispielen ist ersichtlich, dass die Zuweisung der Speicheradresse von$b
zu<?php $a="2010"; $b =&$a; echo $a;//这里输出:2010 echo $b;//这里输出:2010 $b="2012"; echo $a;//这里$a的值变为2012 所以输出 echo $b;//这里输出2012 ?>$b
keine einfache Zuweisung ist. Daher wirkt sich jede Operation an
$b<?php $a = "date"; $b = &$a; echo $a; // date echo $b; // date $b = "date1"; echo $a; // date1 echo $b; // date1 unset($a); echo $b; // date1 ?>
auch auf $a aus. Anders ausgedrückt: Geben Sie $a
Einen Alias $b hinzugefügt. Wenn Sie $a
löschen, wird nur der Name der Variablen gelöscht, der Inhalt der Variablen wird jedoch nicht gelöscht Verwenden Sie den Alias, um den Inhalt der Variablen zu löschen. (Wie in der Abbildung gezeigt)2. Funktionsaufruf nach Adresse
Beispiel 3:
So geht's hierTest(1
);es geht schief
<?php function test(&$a) { $a=$a+100; } $b=1; echo $b;//输出1 //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 test($b); echo $b;//输出101 ?>Adresse.
3. Funktionsreferenzrückgabe
Funktionsreferenzrückgabe wird hauptsächlich in Objekten verwendet, es ist hier leicht zu verstehen
Verwenden Sie die Variable Static als Beispiel
Beispiel 4:
Beachten Sie, dass diese Funktion eine Ausgabe hat und einen Wert zurückgibt.$a = test(); Weisen Sie einfach den Rückgabewert $b
der Funktiontest
zu<?php function &test() { static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } //这条语句会输出 $b的值 为1 $a=test(); $a=5; $a=test();//这条语句会输出 $b的值 为2 $a=&test();//这条语句会输出 $b的值 为3 $a=5; $a=test();//这条语句会输出 $b的值 为6 ?>$a
zu Ja, es ist nur eine normale Zuweisung, keine Referenzrückgabe von einer Funktion. Egal welche Operation
$aausführt, sie hat keine Auswirkungen auf $b. $a = &test(); wird verwendet, um die Speicheradresse von $b mit der Speicheradresse von $a zu vergleichen zeigt auf die gleiche Stelle, was einen ähnlichen Effekt wie $b = &$a erzeugt. Wenn sich der Wert von
$a ändert, wird er zu 5. wirkt sich auch auf den Wert von $b aus. Wenn also $a = &test(); $a = 5 ausgeführt wird, gibt es $b = 5 und die Funktion gibt $ aus b = 6; >Der Effekt des Ausführens in PHP5 Kopieren von Objekten wird durch Referenzen erreicht. 上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b; PHP5中默认就是通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本。 为了这样的目的,PHP定义了一个特殊的方法,称为clone。 5. 引用的作用 如果程序比较大,引用同一个对象的变量比较多,并且希望用完 该对象后手工清除它,建议用 "&" 方式,然后用$var=null的方式清除。其它时候还是用php5的默认方式吧.。 另外, php5中对于大数组的传递,建议用 "&" 方式, 毕竟节省内存空间使用。 6. 取消引用 当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。 例如: 不会 unset $b,只是 $a。 可以参看变量的引用那段 7. global 引用 当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。 它等价于下面这段代码: 这意味着,例如,unset $var 不会 unset 全局变量。 8. $this 在一个对象的方法中,$this 永远是调用它的对象的引用。 另外说明 php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用 采用的是“写时拷贝”的原理,就是除非发生写操作,才会拷贝,其他操作,指向同一个地址的变量或者对象是不会被拷贝的。 假如,有以下代码: $a="ABC"; Zu diesem Zeitpunkt verweisen $a und $b beide auf dieselbe Speicheradresse, nicht $a und $b Anderen Speicher belegen Wenn Sie den folgenden Code zusätzlich zum obigen Code hinzufügen, $a="EFG"; fahren Sie hier fort " Schreibvorgang Da die Daten im Speicher, auf die $a und $b zeigen, neu geschrieben werden müssen, beurteilt der Zend-Kern zu diesem Zeitpunkt automatisch und erstellt automatisch eine Datenkopie von $a für $b. und schreiben Sie es neu. Beantragen Sie ein Stück Speicher zur Speicherung. <?php
$a = 1;
$b =& $a;
unset ($a);
?>
<?php
$var =& $GLOBALS["var"];
?>
$b=$a;
Das obige ist der detaillierte Inhalt vonWie verwende ich das Referenz-kaufmännische Und? Ausführliche Erläuterung von PHP- und Symbolverwendungsbeispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!