本文内容最终以PHP: 变量范围 – Manual中的Global部分为准。
博主很粗心的研究了一下文档就来写这篇文章了,只是做个笔记,并且没有做测试,所有内容都是我猜的[不怕被我误导的话就看下去吧],有错误请指出,没什么问题的话也提醒我一下,我来给文章mark下可信。
首先说一下我总结出来的Global使用规则先。
1.在函数里使用在函数外定义的变量在变量前加上至少一次Global来访问。
2.要让函数里的变量可以被外部访问,就要在函数里定义的变量之前加上Global,然后可以在外部直接使用,如果在其它函数里使用的话,参考1。
接下来是正文,如果上面的规则没看懂的话,下面会给出一些例子来帮助理解。
先说一下①,PHP的变量定义和其它语言有点不一样。拿C语言举个例子,C定义在函数外的变量都可以被同级的函数或函数的内部函数直接用变量名的形式调用,但是PHP不是这样,他需要在前面加个global,例:
<?php $a = 1;//定义一个变量a function b() { global $a=2;//说明a是外面的变量并且赋值为2 } b();//跑一下b函数 echo $a;//输出a ?>
没猜错的话应该会出现2。
但是如果像下面这么写
<?php $a = 1;//又定义一个变量a function b() { $a=2;//这里的a是个局部变量 } b();//跑一下b函数 echo $a;//输出a ?>
这个时候输出的应该还是1。
那么①里说的至少用一次global是什么意思呢,看了看文档我觉得是这个意思:
<?php $a = 1;//还是定义一个变量a function b() { global $a;//说明a是外面的变量 $a=2; $a+=2; } b();//跑一下b函数 echo $a;//输出a ?>
我猜结果是4,从这段代码里可以看出只有一个$a加了global,而且是第一个。因为至此就已经告诉PHP这个函数里用的所有叫$a的变量都是门外面那个,后面的就不用再加上全局变量标识了。
到这里①已经没啥好讲了,有疑问或错误请留言。
接下来开始②。
首先来看一段短代码:
<?php function b() { global $a;//在函数里面定义了一个全局变量a $a=250; } b();//跑一下b函数 echo $a;//输出a ?>
这个时候没猜错的话结果应该是250,因为在函数里a被定义成了全局变量,让a可以在函数外访问而且函数结束以后a不会消失。
然后我觉得要在其它函数里用这些全局变量的话方法和①是一样的,给函数里的变量加一次global,如下:
<?php function b() { global $a;//在函数里面定义一个全局变量a $a=250;//赋值250【博主专注无节操16年】 } b();//跑一下b函数 function c() { global $a;//把这个域里的a指到全局变量a echo $a; } c();//跑一下c函数 ?>
这是输出的也应该是250。
本文完
本文发布于 https://luojia.me
本站文章未经文下加注授权不得拷贝发布。