首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
PHP的标记风格
编码规范
常量的使用
内置常量
PHP中的变量声明
可变变量与变量的引用
变量作用域
变量的销毁
数据类型
标量类型的声明
算术运算符
字符串运算符
其它运算符
表达式
内置函数
自定义函数
函数传递参数值
函数返回值
文件包含
流程控制
循环控制结构
PHP 8的新变化1—match表达式
PHP 8的新变化2—联合类型和mixed类型
PHP 8的新变化3—参数列表中可以使用尾部逗号
实战演练1—条件分支结构综合应用
实战演练2—循环控制结构综合应用
当前位置:
首页>>
技术小册>>
PHP8入门与项目实战(2)
小册名称:PHP8入门与项目实战(2)
所谓变量作用域(scope),是指特定变量在代码中可以被访问到的位置。在PHP中有6种基本的变量作用域法则。 (1)内置超全局变量(built-in superglobal variables),在代码中的任意位置都可以访问到。 (2)常数(constants),一旦声明,就是全局性的,可以在函数内外使用。 (3)全局变量(global variables),在代码间声明,可在代码间访问,但是不能在函数内访问。 (4)在函数中声明为全局变量的变量就是同名的全局变量。 (5)在函数中创建和声明为静态变量的变量在函数外是无法访问的,但是这个静态变量的值可以保留。 (6)在函数中创建和声明的局部变量在函数外是无法访问的,并且在本函数终止时失效。 1.超全局变量 superglobal或autoglobal可以称为“超全局变量”或“自动全局变量”。这种变量的特性是,无论在程序的任何地方都可以访问到,无论是函数内还是函数外都可以访问到。而这些“超全局变量”就是由PHP预先定义好以方便使用的。 那么这些“超全局变量”或“自动全局变量”都有哪些呢? ·$GLOBALS:包含全局变量的数组。 ·$_GET:包含所有通过GET方法传递给代码的变量的数组。 ·$_POST:包含所有通过POST方法传递给代码的变量的数组。 ·$_FILES:包含文件上传变量的数组。 ·$_COOKIE:包含cookie变量的数组。 ·$_SERVER:包含服务器环境变量的数组。 ·$_ENV:包含环境变量的数组。 ·$_REQUEST:包含用户所有输入内容的数组(包括$_GET、$_POST和$_COOKIE)。 ·$_SESSION:包含会话变量的数组。 2.全局变量 全局变量其实就是在函数外声明的变量,在代码间都可以访问,但是在函数内是不能访问的。这是因为函数默认不能访问在其外部的全局变量。 通过下面的实例介绍全局变量的使用方法和技巧。 【例3.5】 ```php <?php $a=100; // 全局变量 // 访问全局变量 function ff() { $b=100; // 局部变量 echo "变量a为: $a"; // 访问全局变量 echo "<br/>"; echo "变量b为: $b"; // 访问局部变量 } ff(); // 函数内访问全局变量和局部变量 echo "<br/>"; echo "变量a为: $a"; //函数外访问全局变量和局部变量 echo "<br/>"; echo "变量b为: $y"; // 访问局部变量 ?> ``` 本程序运行结果如图3-5所示。 ![](/uploads/images/20231207/0f69457e936033430792159689f65240.png) 出现上述结果是因为函数无法访问外部全局变量,但是在代码间可以访问全局变量。 如果想让函数访问某个全局变量,可以在函数中通过global关键字来声明,就是要告诉函数,它要调用的变量是一个已经存在或者即将创建的同名全局变量,而不是默认的本地变量。 通过下面的实例介绍global关键字的使用方法和技巧。 【例3.6】 ```php <?php $a=100; //全局变量 // 访问全局变量 function ff() { $b=100; //局部变量 global $a; //函数内调用全局变量 echo "变量a为: $a"; //访问全局变量 echo "<br/>"; echo "变量b为: $b"; // 访问局部变量 } ff(); // 函数内访问全局变量和局部变量 ?> ``` 本程序运行结果如图3-6所示。 ![](/uploads/images/20231207/32d47316bf850eec0e2772dc37f2075a.png) 注意:在PHP中,global关键字现在只能引用简单变量,例如: ```php global $$foo->bar; // 这种写法不支持 global ${$foo->bar}; // 需用大括号来达到效果 ``` 另外,读者还可以通过“超全局变量”中的$GLOBALS数组进行访问。 下面通过实例介绍$GLOBALS数组。 【例3.7】 ```php <?php $a=200; // 全局变量 // 访问全局变量 function ff() { $b=100; //局部变量 $a=$GLOBALS['a']; // 通过$GLOBALS数组访问全局变量 echo "变量a为: $a"; // 访问全局变量 echo "<br/>"; echo "变量b为: $b"; // 访问局部变量 } ff(); // 函数内访问全局变量和局部变量 ?> ``` 本程序运行结果如图3-7所示。 ![](/uploads/images/20231207/2f43c4b5ddc19d2f92c6117583b60de3.png) 从结果可以看出,上述两种方法都可以实现在函数内访问全局变量。 3.静态变量 静态变量只是在函数内存在,在函数外无法访问。但是执行后,其值保留,也就是说这一次执行完毕后,静态变量的值保留,下一次再执行此函数,这个值还可以调用。 通过下面的实例介绍静态变量的使用方法和技巧。 【例3.8】 ```php <?php $person = 20; function showpeople(){ static $person = 5; $person++; echo '再增加一位客户, 将会有 '.$person.' 位客户。<br/>'; } showpeople(); echo $person.'人员。<br/>'; showpeople(); ?> ``` 本程序运行结果如图3-8所示。 ![](/uploads/images/20231207/3da9f868974726e974ea905d2379e194.png) 【案例分析】: (1)其中函数外的echo语句无法调用函数内的static $person,它调用的是$person=20。 (2)showpeople()函数被执行两次,这个过程中static $person的运算值得以保留,并且通过$person++进行了累加。
上一篇:
可变变量与变量的引用
下一篇:
变量的销毁
该分类下的相关小册推荐:
Yii2框架从入门到精通(上)
PHP合辑3-数组函数
Laravel(10.x)从入门到精通(一)
Magento2主题开发高级实战
ThinkPHP项目开发实战
Shopify应用实战开发
Yii2框架从入门到精通(中)
Laravel(10.x)从入门到精通(九)
Laravel(10.x)从入门到精通(十五)
Laravel(10.x)从入门到精通(十七)
Magento零基础到架构师(库存管理)
Magento零基础到架构师(产品管理)