作用域:变量(常量)能够被访问的区域
1、变量可以在普通代码中定义
2、变量也可以在函数内部定义
在PHP中作用域严格来说分为两种:但是PHP内部还定义一些在严格意义之外的一种,所以总共算三种:
1、全局变量:就是用户普通定义的变量〈函数外部定义)
所属全局空间:在PHP中只允许在全局空间使用:理论上函数内部不可方法, 也就是函数内部不能访问全局变量,解决方法:
<?php $a="hhh"; function display(){ echo $GLOBALS["a"]; } ?>
如果想在函数内部使用外部变量,除了 $GLOBALS[ ] 以外,还可以使用参数传值,
生命:直到程序运行结束
2、局部变量:就是在函数内部定义的变量(可以拿自定义函数的形参来理解)
所属当前函数空间:在PHP中只允许在当前函数自己内部使用
生命:函数运行结束
3、超全局变量:系统定义的变量(预定义变量:$SERVER、$POST等)
所属超全局空间:没有访问限制(函数内外都可以访问)
在PHP中,其实还有一种方式,能够实现全局访问局部,同时局部也可以访问全局: global关键字
Global关键字:是一种在函数里面定义变量的一种方式
1、如果使用global定义的变量名在外部存在(全局变量),那么系统在函数内部定义的变量直接指向外部全局变量所指向的内存空间(同一个变量);
2、如果使用global定义的变量名在外部不存在(全局变量),系统会自动在全局空间(外部)定义一个与局部变量同名的全局变量;
本质:对同名变量使用同一块内存地址保存数据
代码:
<?php $a="hhh"; function display(){ global $a; echo $a; } ?>
此外,在函数内部通过 global 的方式生命一个函数以外不存在的变量, 那这个变量也是可以在函数外面访问到的