// global在函数中产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,一旦改变了别名的变量指向地址,就会发生一些意外的情况 $a = 10; function test() { global $a; echo $a; // 10 unset($a); } test(); // 10 echo $a; // 10 // $GLOBALS[] 确实是调用外部的变量,函数内外始终保持一致 // $GLOBALS:由所有定义全局变量组成的数组,变量名就是该数组的索引 $a = 100; function test() { $GLOBALS['a'] = 9; // 该数组$GLOBALS下标名就是 全局变量名 } test(); echo $a; // 9 $arr['lin'] = 100; echo $GLOBALS['arr']['lin']; // 100