- 作用域
- 变量(常量)能够被访问的区域
- 变量可在普通代码中定义,也可在函数内部定义
- 作用域分类
- 全局变量:普通定义(外部定义)PHP中全局变量不自动可用$GLOBALS访问全局变量
- 局部变量:函数内部定义
- 超全局变量:系统定义的变量(预定义变量:$_SERVER $_POST)无访问限制,超全局变量会将全局变量自动纳入到$GLOBALS里面,$globals没有作用域限制,必须以数组形式
- 如果函数内部使用外部变量除了$GLOBALS之外,还能使用引用传值
- 在PHP中,其实还有一种方式,能够实现全局访问局部,同时局部也可以访问全局:global关键字
- Global关键字:
- 是一种在函数里面定义变量的一种方式
- 如果使用global定义的变量名在外部存在(全局变量),那么系统在函数内部定义的变量直接指向外部全局变量所指向的内存空间(同一个变量);
- 如果使用global定义的变量名在外部不存在(全局变量),系统会自动在全局空间(外部)定义一个与局部变量同名的全局变量
- 本质的形式:在函数的内部和外部,对一个同名变量(全局和局部)使用同一块内存地址保存数据,从而实现共同拥有。
- 基本语法:Global 变量名; //不能赋值 变量名 = 值; //修改
- Global关键字:
- 静态变量(static)
- 使用static关键字修饰,用来实现跨函数共享数据的变量:函数运行结束所有局部变量都会清空,如果重新运行一下函数,所有的局部变量又会重新初始化。
- 静态变量:函数执行结束之后,依然存在
- 基本语法:Function 函数名(){//定义变量Static $变量名 = 值; //通常会在定义的时就直接赋值}
- 静态变量的使用:
- 为了统计:当前函数被调用的次数(有没有替代方法?)
- 为了统筹函数多次调用得到的不同结果(递归思想)
- 静态变量的作用是为了跨函数共享数据(同一个函数被多次调用)