Dieser Artikel stellt hauptsächlich den Unterschied zwischen global und $GLOBALS[' '] in PHP vor. Ich hoffe, dass er für alle hilfreich ist.
Ich dachte immer, dass es keinen Unterschied zwischen global und $GLOBALS[' '] in PHP gibt. Ich habe es heute überprüft und festgestellt, dass es einen großen Unterschied zwischen den beiden gibt:
global $var: Es ist ein Verweis auf die globale Variable $var; $GLOBALS[„var“]: Es ist die globale Variable $var selbst, die äquivalent zu $var ist :
Beispiel 1:
<?php $var1 = 1; $var2 = 2; function test() { $GLOBALS['var2'] = &$GLOBALS['var1']; } test(); echo $var2;//输出1 ?>
Beispiel 2:
<?php $var1 = 1; $var2 = 2; function test(){ global $var1, $var2; $var2 = &$var1; echo $var2; $var2 = 'hello...'; } test(); // 输出 1 echo $var2; // 输出 2 echo $var1; // 输出 hello... ?>
In der Testfunktion sind $var1 und $var2 Referenzen (d. h. Aliase) der globalen Variablen $var1 bzw. $var2
$var2 = &$var1 ; //Der Wert von $var2 (lokale Variable) in der Testfunktion wird in die Referenz von $var1 in der Funktion geändertZu diesem Zeitpunkt ist der Wert von $var2 in der Testfunktion gleich dem Wert von $ var1 in der Funktion, der auch dem Wert in der globalen Variablen entspricht. Der Wert von $var1 zeigt alle drei auf denselben Speicherplatz. Wenn sich der Wert von $var2 in der Testfunktion ändert, ändern sich die Werte der anderen zwei ($var1 in der Testfunktion und $var1 in der globalen Variablen) ändern sich ebenfalls.
Beispiel 3.
<?php $var1 = 1; function test(){ unset($GLOBALS['var1']); } test(); echo $var1; ?>
Wie oben erwähnt, ist $GLOBALS['var1'] äquivalent zu $var1 in globalen Variablen, unset($GLOBALS['var1' ] ); ist äquivalent zu Die globale Variable $var1 wird zerstört, sodass sie leer gedruckt wird.
Ergänzung:Die Funktion unset() in PHP wird verwendet, um Variablen zu zerstören. In vielen Fällen wird nur die Variable zerstört, der Wert jedoch nicht im Speicher zerstört (das heißt, die Funktion unset() unterbricht die Beziehung zwischen der Variablen und dem Speicher exponentiell, zerstört den Variablennamen, der Wert im Speicher wird nicht zerstört und der Speicher wird nicht freigegeben.) Was zu beachten ist :
1. Diese Funktion gibt den Speicher nur dann frei, wenn der von der Variablen belegte Speicher 256 Bytes überschreitet.
2. Die Adresse wird nur freigegeben, wenn alle Variablen, die auf den Speicher verweisen, auf den die Variable verweist (z. B. alle Verweise auf die Variable), zerstört werden.
Beispiel 4.
<?php $var1 = 1; function test(){ global $var1; unset($var1); } test(); echo $var1; //结果为打印1 ?>
In diesem Code ist die mit global in der Funktion test() definierte Variable eigentlich nur ein Verweis auf die globale Variable $var, die im Test zerstört wird( ) Funktion Diese Variable entspricht der Zerstörung eines Verweises auf die globale Variable (ein Teil des Speichers hat zwei Namen. Das Löschen eines der Namen hat keine Auswirkungen auf den anderen Namen und den Wert des Speichers, wenn die globale Variable $ gedruckt wird). var, das Ergebnis ist immer noch 1. Dieser Code führt ähnliche Operationen wie der folgende Code aus:
<?php $var = 1; $var1 = &$var; unset($var1); echo $var; ?>
Schauen wir uns ein weiteres Beispiel für die Referenzierung globaler Variablen innerhalb einer Funktion an:
<?php $var1 = "我是变量var1的值"; $var2 = "我是变量var2的值"; function global_references($use_globals) { global $var1, $var2; if (!$use_globals) { $var2 = &$var1; echo $var1; echo $var2; echo "<br />"; } else { $GLOBALS["var2"] = &$var1; echo $var1; echo $var2; echo "<br />"; } } global_references(false); //1.打印:我是变量var1的值我是变量var1的值 echo $var1; echo $var2; echo "<br />"; //2.打印:我是变量var1的值我是变量var2的值 global_references(true); //3.打印:我是变量var1的值我是变量var2的值 echo $var1; echo $var2; echo "<br />"; //4.打印:我是变量var1的值我是变量var1的值 ?>
$GLOBALS["var"]: ist die globale Variable $var selbst, Das ist Äquivalent zu $var.
Wenn Ersteres eine innerhalb einer Funktion deklarierte Variable ist, ist ihr Gültigkeitsbereich nur innerhalb der Funktion sichtbar. Diese Variable ist eine Referenz auf eine globale Variable Die Variable hat keinen Einfluss auf die Funktion. Die globale Variable, auf die sie verweist, hat Auswirkungen.
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonglobal und $GLOBALS[ in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!