Heim > Artikel > Backend-Entwicklung > Über globale Variablen in PHP
Hallo zusammen, ich habe den Unterschied zwischen dem superglobalen Array $_GLOBALS und der durch global definierten globalen Variablen aus dem Internet gelesen. Der Unterschied ist wie folgt:
$GLOBALS['var'] ist die externe globale Variable selbst
globale $var ist eine Referenz oder ein Zeiger auf die Variable mit demselben Namen wie die externe $var und keine echte Zuweisung
Also habe ich es versucht und der Code ist wie folgt:
<code><?php $var1 = 1; function test(){ global $var1; //变量的引用 unset($GLOBALS['var1']); //销毁变量本身 echo $var1; } test(); ?></code>
Nach Xiaobais Gedanken ist das so: Da es nicht gesetzt wurde ($GLOBALS['var1']);, wird die Variable selbst zerstört und der Verweis auf die Variable hat keine Bedeutung, sodass das Ergebnis nicht sein kann Ausgabe.
Aber ich habe es ausgeführt und das Ergebnis war 1, daher konnte ich es als Anfänger nicht verstehen. Ich möchte es mir im Voraus erklären.
Hallo zusammen, ich habe den Unterschied zwischen dem superglobalen Array $_GLOBALS und der durch global definierten globalen Variablen aus dem Internet gelesen. Der Unterschied ist wie folgt:
$GLOBALS['var'] ist die externe globale Variable selbst
globale $var ist eine Referenz oder ein Zeiger auf die Variable mit demselben Namen wie die externe $var und keine echte Zuweisung
Also habe ich es versucht und der Code ist wie folgt:
<code><?php $var1 = 1; function test(){ global $var1; //变量的引用 unset($GLOBALS['var1']); //销毁变量本身 echo $var1; } test(); ?></code>
Nach Xiaobais Gedanken ist das so: Da es nicht gesetzt wurde ($GLOBALS['var1']);, wird die Variable selbst zerstört und der Verweis auf die Variable hat keine Bedeutung, sodass das Ergebnis nicht sein kann Ausgabe.
Aber ich habe es ausgeführt und das Ergebnis war 1, daher konnte ich es als Anfänger nicht verstehen. Ich möchte es mir im Voraus erklären.
In PHP ist die darin enthaltene Funktion immer eine private Variable. Global generiert in der Funktion eine Aliasvariable, die auf die externe Variable der Funktion verweist, und nicht eine einfache Referenz oder einen Zeiger auf die externe Variable mit demselben Namen
Tatsächlich kann es einfach als das Problem des Adresszeigers der Variablen verstanden werden.
$GLOBALS['var1']
ist derselbe Zeiger wie der externe $var1
und zeigt auf die Speicheradresse
global $var1
ist ein Kopierzeiger des externen $val1
-Zeigers und zeigt auch auf die Speicheradresse
Egal $GLOBALS['var1']
oder global $var1
, da die Wertspeicheradresse, auf die verwiesen wird, dieselbe ist, kann der Zweck der Änderung des Werts der externen Variablen erreicht werden.
Also:
unset($GLOBALS['var1'])
-Operation zerstört auch die externe $var1
test
-Funktion global $val1; unset($val1)
und zerstört nicht die externe $var1
Schauen Sie sich den Code unten an, Sie werden es klarer wissen
<code><?php $var1 = 1; function test(){ global $var1; unset($var1); } test(); echo $var1;// 此处输出1</code>
<code><?php $var1 = 1; function test(){ unset($GLOBALS['var1']); } test(); echo $var1;// 此处报错PHP Notice: Undefined variable: var1</code>
<code>global $var1; </code>
ist ungefähr gleich
<code>$var1 = $GLOBALS['var1'];</code>