Heim > Backend-Entwicklung > PHP-Tutorial > PHP中global跟$GLOBALS[]的区别

PHP中global跟$GLOBALS[]的区别

WBOY
Freigeben: 2016-06-13 13:08:15
Original
833 Leute haben es durchsucht

PHP中global和$GLOBALS[]的区别

很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然。

根据官方的解释是

1.$GLOBALS['var']是外部的全局变量本身

2.global $var是外部$var的同名引用或者指针。

举例说明一下:

  1. <?php??
  2. $var1?=?1;??
  3. $var2?=?2;??
  4. function?test(){??
  5. ????$GLOBALS['var2']?=?&$GLOBALS['var1'];??
  6. }??
  7. test();??
  8. echo?$var2;??
  9. ?>??

正常打印结果为1

  1. <?php??
  2. $var1?=?1;??
  3. $var2?=?2;??
  4. function?test(){??
  5. ????global?$var1,$var2;??
  6. ????$var2?=?&$var1;??
  7. }??
  8. test();??
  9. echo?$var2;??
  10. ?>??

意外打印结果为2

为什么会打印结果为2呢?其实就是因为$var1的引用指向了$var2的引用地址。导致实质的值没有改变。

我们再来看一个例子吧。

  1. <?php??
  2. $var1?=?1;??
  3. function?test(){??
  4. ????unset($GLOBALS['var1']);??
  5. }??
  6. test();??
  7. echo?$var1;??
  8. ?>??

因为$var1被删除了,所以什么东西都没有打印。

  1. <?php??
  2. $var1?=?1;??
  3. function?test(){??
  4. ????global??$var1;??
  5. ????unset($var1);??
  6. }??
  7. test();??
  8. echo?$var1;??
  9. ?>??

意外的打印了1。证明删除的只是别名|引用,起本身的值没有受到任何的改变。

明白了吧?

也就是说global $var其实就是$var = &$GLOBALS['var']。调用外部变量的一个别名而已

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage