函数中的变量
本文为大家说明函数中的变量,其分为两部分,全局变量和局部变量。
其中局部变量也可以分为两部分:静态变量和动态变量。
首先,我们来理解一下什么是动态变量?先看下面一段代码 :
这样的一段代码打印出的结果
显示结果,我们没有定义变量a,而我们在函数内部明明定义了变量a。
这里我说明一下,定义的变量只能在函数所包含,只能在函数体内部才能识别进行使用这就是局部变量;
那么什么是动态呢,动态是说 该函数只有在函数中才会生效,而遇到函数结尾的大括号,那么这个变量就会被抹杀掉;
下面我们再来说明一下什么是局部静态变量;
声明静态变量:static;
首先,我们来看下面一段代码
结果显示:
$b 自增+1,输出 ,打印结果为4; 看起来和我们平时所用函数没什么区别,如何体现我们的static呢;
再看下面
我们多进行一次调用,正常来看,应该输出两次4,结果为44;
然而我们的显示结果
这个就是我们的static的作用,再次走到static $b = 3时,它会先查询static后面的变量存不存在,是否已经声明过了或者赋值过了。
static的作用:在函数结束时,使该变量不会被释放掉,而去储存在我们内存的一个角落,等待我们的再次使用;所以第一次的时候我们进行运行时,会正常的看到4,但是第二次因为是一个静态的变量,运行会发现$b已经有值,它会找到这个已有的值,不读取后面,直接进行下一步操作,进行自增,所以4变成了5;
当然,虽然static拥有让变量储存的功能,但是,归根结底,它还是一个局部变量,一样不能在函数外部进行使用;
这里局部变量简单的介绍完了,下面我们说一下全局变量;
首先看下面一段代码
我们在函数内部使用了外部的变量$a和$b,而结果会告诉我们:
并不认识$a和$b是谁,这个时候如果我们想要使用,那么就需要使用一个关键字global。
这样就会告诉我们的函数,这变量在函数外面已经定义好了,打印结果也就会变成:
而这个时候我们进行下面的一段操作:
我们在函数内部进行重新赋值,再打印,结果会显示
原因是因为,在global的声明之后,我们内部的$a同样代表的外部的$a,所以修改时,修改的也是外面的$a,这也就是我们的全局变量;