php变量作用域(花括号、global、闭包)
来源:互联网 发布:中美2535亿 知乎 编辑:程序博客网 时间:2024/05/29 03:19
变量的作用域是变量的一个作用范围,在这个范围内变量为可见的,即可以访问该变量的代码区域, 相反,如果不在这个范围内,变量是不可见的,无法被调用。 (全局变量可以将作用范围看作为整个程序)
花括号
很多语言都以花括号作为作用域界限,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"
可见if和for的花括号并无构成新的作用域。
而函数:
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
21 0
- php变量作用域(花括号、global、闭包)
- PHP变量作用域(花括号、global、闭包)
- PHP开始啦--变量作用域,global关键词,static关键词
- php源码之路第三章第六节( 变量的作用域和global语句)
- php 输出变量加大括号{}的作用
- php 输出变量加大括号{}的作用
- python变量作用域(global and nonlocal)
- python global语句 变量作用域
- php函数,static,global关键字及三种变量作用域
- php 函数变量的作用域 两个关键词global 和static
- php中Global变量和$GLOBALS [ ]的作用
- php 全局变量global的作用域
- php:global变量解析
- php:global变量解析
- PHP global变量
- php global变量无效
- php global变量无效
- JavaScript 变量作用域及闭包
- Selenium自动化测试实践 公开班(广州)
- bda驱动学习笔记
- OCP-1Z0-新051-61题版本-40
- 黑马程序员:内部类
- 关于matlab中动态增长数据结构的实验记录
- php变量作用域(花括号、global、闭包)
- ZOJ-1698
- OCP-1Z0-新051-61题版本-41
- 在64位Windows 7系统上部署Apache+PHP+MySQL
- Apache Thrift - 可伸缩的跨语言服务开发框架
- 黑马程序员--高新技术之动态代理
- 生活回顾
- 【android,24】服务组件的使用
- OCP-1Z0-新051-61题版本-42