- 1、定义在函数外部的就是全局变量,它的作用域从定义处一直到文件结尾。
- 2、函数内定义的变量就是局部变量,它的作用域为函数定义范围内。
- 3、函数之间存在作用域互不影响。
- 4、函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组
在 php 中函数是有独立的作用域,所以局部变量会覆盖全局变量,即使局部变量中并定义没有全局变量相同的变量,也会被覆盖。如下:
1 <?php 2 $a=5; 3 $b=3; 4 function t() 5 { 6 echo $a-$b; // 输出 0 7 } 8 t(); 9 ?>
要想在函数中直接使用全局变量可以通过 global 关键字声明或者通过 php 中自定义的 $GLOBALS 数组获取:
1 <?php 2 $a=5; 3 $b=3; 4 function t1() 5 { 6 global $a,$b; 7 echo $a-$b; // 输出 2 8 } 9 t1(); 10 11 echo PHP_EOL; 12 13 function t2() 14 { 15 echo $GLOBALS['a']-$GLOBALS['b']; // 输出 2 16 } 17 t2(); 18 ?>