php变量作用域(花括号、global、闭包)

变量的作用域是变量的一个作用范围,在这个范围内变量为可见的,即可以访问该变量的代码区域, 相反,如果不在这个范围内,变量是不可见的,无法被调用。 (全局变量可以将作用范围看作为整个程序)

花括号

很多语言都以花括号作为作用域界限,PHP中只有函数的花括号才构成新的作用域。

01 <?php
02 if (True) {
03     $a 'var a';
04 }
05  
06 var_dump($a);
07  
08 for ($i = 0; $i < 1; $i++) {
09     $b 'var b';
10     for ($i = 0; $i < 1; $i++) {
11         $c 'var c';
12     }
13     var_dump($c);
14 }
15  
16 var_dump($b);
17 var_dump($c);
18 ?>

运行结果是:

1 string(5) "var a" string(5) "var c" string(5) "var b" string(5) "var c"

可见iffor的花括号并无构成新的作用域。

而函数:

1 <?php
2 function test() {
3     $test 'var test';
4 }
5  
6 test();
7 var_dump($test);
8 ?>

结果是:

1 NULL

 

global关键字

PHP的执行是以一个.php脚本为单位,在一个.php脚本的执行过程中,可以include和require其他PHP脚本进来执行。

执行的.php脚本与include/require进来的脚本共享一个全局域(global scope)。

global关键字无论在哪层,所引用的都是全局域的变量。

01 <?php
02 $test 'global test';
03 function a() {
04     $test 'test in a()';
05     function b() {
06         global $test;
07         var_dump($test);
08     }
09     b();
10 }
11  
12 a();
13 ?>

执行结果是:

1 string(11) "global test"

 

闭包

闭包作用域跟函数类似,内层不能访问外层变量,外层也不能访问内层变量。

01 <?php
02 function a() {
03     $test 'test in a()';
04     function b() {
05         var_dump($test); // $test不能被访问
06         $varb 'varb in b()';
07     }
08  
09     b();
10     var_dump($varb); // $varb也不能被访问
11 }
12  
13 a();
14 ?>

执行结果:

1 NULL NULL

 


                                                     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值