今天开始学PHP-关于作用域

在PHP中作用域严格来说分为两种:但是PHP内部还定义一些在严格意义之外的一种,所以总共算三种:

1、 全局变量:就是用户普通定义的变量(函数外部定义)
所属全局空间:在PHP中只允许在全局空间使用:理论上函数内部不可方法
脚本周期:直到脚本运行结束(最后一行代码执行完)

在这里插入图片描述
2、 局部变量:就是在函数内部定义的变量
所属当前函数空间:在PHP中只允许在当前函数自己内部使用
函数周期:函数执行结束(函数是在栈区中开辟独立内存空间运行)

在这里插入图片描述
3、 超全局变量:系统定义的变量(预定义变量: S E R V E R 、 _SERVER、 SERVER_POST等)
所属超全局空间:没有访问限制(函数内外都可以访问)
超全局变量会将全局变量自动纳入到 G L O B A L S 里 面 , 而 GLOBALS里面,而 GLOBALSGLOBALS没有作用域限制,所以能够帮助局部去访问全局变量:但是必须使用数组方式

在这里插入图片描述
如果想函数内部使用外部变量:除了$GLOBALS之外,通过参数传值(如果要统一战线还可以使用引用传值)。

在PHP中,其实还有一种方式,能够实现全局访问局部,同时局部也可以访问全局:global关键字
Global关键字:是一种在函数里面定义变量的一种方式
1、 如果使用global定义的变量名在外部存在(全局变量),那么系统在函数内部定义的变量直接指向外部全局变量所指向的内存空间(同一个变量);
2、 如果使用global定义的变量名在外部不存在(全局变量),系统会自动在全局空间(外部)定义一个与局部变量同名的全局变量

本质的形式:在函数的内部和外部,对一个同名变量(全局和局部)使用同一块内存地址保存数据,从而实现共同拥有。

基本语法:
Global 变量名; //不能赋值
变量名 = 值; //修改
在这里插入图片描述
虽然以上方式可以实现局部与全局的互访,但是通常不会这么用。一般如果会存在特殊使用,也会使用参数的形式来访问。(还可以使用常量:define定义的)

静态变量
静态变量:static,是在函数内部定义的变量,使用static关键字修饰,用来实现跨函数共享数据的变量:函数运行结束所有局部变量都会清空,如果重新运行一下函数,所有的局部变量又会重新初始化。

基本语法:
Function 函数名(){
//定义变量
Static $变量名 = 值; //通常会在定义的时候就直接赋值
}
在这里插入图片描述
静态变量的作用是为了跨函数共享数据(同一个函数被多次调用)
在这里插入图片描述
静态变量的使用(思考):
1、 为了统计:当前函数被调用的次数(有没有替代方法?)
2、 为了统筹函数多次调用得到的不同结果(递归思想)

代码就不放了,自己敲

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值