PHP 变量作用域
2021/7/28 17:06:26
本文主要是介绍PHP 变量作用域,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
变量的作用域是脚本中变量可被引用和使用的部分,PHP 中有四种不同的变量作用域:
序号 | 作用域 | 描述 |
---|---|---|
1 | local | 局部作用域 |
2 | global | 全局作用域 |
3 | static | 静态作用域 |
4 | parameter | 函数参数作用域 |
1、local(本地的)—— 局部变量的作用域
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。
<?php function test() { $a = 15; echo "内部输出结果:" . $a; } echo "外部输出结果:" . $a; // 无法访问变量 a echo PHP_EOL; test(); ?>
输出结果:
外部输出结果: 内部输出结果:15
2、global(总体的)—— 全局变量的作用域
在所有函数外部定义的变量是全局变量,除了函数外,全局变量可以被脚本中的任何部分访问、要在一个函数中访问一个全局变量,需要使用 global 关键字。
<?php $x = 5; $y = 10; $z = 0; function test() { global$x,$y,$z; $z = $x + $y; } test(); echo $z; ?>
结果:15
PHP 将所有的全局变量存储在一个名为 $GLOBALS[index] 的数组里,index 保存变量的名称。
这个数组可以在函数内部访问,也可以直接用来更新全局变量。
<?php $x = 5; $y = 10; $z = 0; function test() { $GLOBALS['z'] = $GLOBALS['x']+$GLOBALS['y']; } Test(); echo $z; ?>
结果:15
3、static(静态的)—— static 作用域
当一个函数执行完成时,它的所有变量通常都会被删除。
然而,有时需要局部变量不要被删除,要做到这一点,请在您第一次声明变量时使用 static 关键字。
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
<?php function test() { static $x=0; echo $x . " "; $x++; } test(); test(); test(); test(); ?>
结果:0 1 2 3
每次调用函数时, 该变量将会保留请前函的前被调用的值一次。
4、parameter(参数)——参数作用域
参数是通过调用代码将值传递给函数的局部变量。
关于局部变量和全局变量的优先级,因为在PHP中函数都有自己单独的作用域,所以在局部变量的优先级要大于全局变量(在你不声明这个变量之前),声明之后此变量就变成了局部变量如果修改值那么全局变量的值也会改变。
<?php $a = 10; $b = 5; function test() { $a = 15; $b = 5; $z = $a-$b; echo $z; } test(); function test1() { global $a,$b; $a = 15; $b = 5; $z = $a-$b; echo PHP_EOL; echo $z; } test1(); function test2() { global $a,$b; $z= $a-$b; echo PHP_EOL; echo $z; } test2(); ?>
结果:10 10 10
这篇关于PHP 变量作用域的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享