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"

可见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"

时间: 2024-08-04 03:24:24

php变量作用域:花括号、global和闭包的相关文章

PHP Global与$GLOBALS变量作用域与区别

Global,全局变量   PHP Global变量在实际应用中会发现许多问题需要我们不断的去完善处理.我们在这篇文章中就针对PHP Global变量出现的问题给出了一些具体的解决办法. PHP hack的使用技巧详解 代码实现PHP GTK写文本查看器 网站开发中PHP语言优缺点 如何正确实现PHP function函数扩展 PHP error_log()函数处理错误日志 1:PHP Global变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括includ

《深入理解JavaScript》——1.13 变量作用域和闭包

1.13 变量作用域和闭包 在JavaScript中,通过在变量前使用var语句声明变量: 你可以使用单个var语句声明和初始化多个变量: 但是我推荐使用单独声明每一个变量(原因参考26.4.1"语法").因此,我会将之前的语句重写为: 由于前置的缘故(参考1.13.2"变量的提升特性"),通常它的最佳实践是在一个函数的开始部分声明变量. 1.13.1 变量是函数作用域的一个变量的作用域总是完整的函数(相对于当前块).例如: 我们可以看到变量tmp并不局限于(1)行

关于javascript中变量作用域理解

现在就结合网上的一篇文章在重新回顾下作用域这个东西吧. 作用域和上下文并不是同一个东西,很多人可能会把它搞混.每一个函数调用都联系着一个作用域和一个上下文.根本上来说,作用域是基于函数的而上下文是基于对象的.换句话说,作用域与函数调用是能够获取的变量有联系,它对与每一次调用来说都是独一无二的.上下文常常代表this变量的值,它指向"拥有"当前执行的这段代码的对象. 变量作用域 一个变量的作用域是程序源代码中定义这个变量的区域.全局变量拥有全局作用域,在js代码里的任何地方都是有定义的.

javascript中的变量作用域以及变量提升详细介绍_javascript技巧

变量作用域"一个变量的作用域表示这个变量存在的上下文.它指定了你可以访问哪些变量以及你是否有权限访问某个变量." 变量作用域分为局部作用域和全局作用域. 局部变量(处于函数级别的作用域)不像其他对面对象的编程语言(比方说C++,Java等等),javascript没有块级作用域(被花括号包围的):当是,javascript有拥有函数级别的作用域,也就是说,在一个函数内定义的变量只能在函数内部访问或者这个函数内部的函数访问(闭包除外,这个我们过几天再写个专题). 函数级别作用域的一个例子

Python基本语法_变量作用域LEGB

目录 目录 软件系统 变量的作用域 高级语言对数据类型的使用过程 作用域的产生 作用域的类型 Llocal局部作用域 Eenclosing嵌套作用域 Gglobal全局作用域 Bbuilt-in内置作用域 变量名解析LEGB法则 实例说明 对变量的引用 对变量的修改 global关键字 nonlocal关键字 命名空间和作用域的区别 软件系统 系统 Ubuntu 14.04 软件 Python 2.7.3 IPython 4.0.0 变量的作用域 在Python程序中创建.改变.查找变量名时,都

有关js的变量作用域和this指针的讨论_javascript技巧

一.变量作用域:[P71] 这一句话说的非常精辟:"在ECMAScript中,只有两种执行环境,全局环境和函数环境,每个函数都是一个执行环境,包括嵌套函数.换句话说,其他情况下即使变量声明在一对大括号中,在括号外部仍然可以访问这些变量".以下给出例子: 复制代码 代码如下: for(var i=0; i<5; i++) { var num = 20; // 在for语句中声明的变量 } alert(num); // 在for语句外部调用变量,仍然可以得到num的值 对异常语句也同

JavaScript 变量 作用域 内存

知识点 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变. 一.变量及作用域 1.基本类型和引用类型的值 变量可能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置.而引用

python 变量作用域详细介绍

 在python中,变量查找遵循LGB原则,即优先在局部作用域(local scope)中对变量进行查找,失败则在全局作用域(global scope)中进行查找,最后尝试再内建作用域(build-in scope)内查找,如果还是未找到的话,则抛出异常.后来由于闭包和嵌套函数的出现,作用域又增加了外部作用域,这样变量的查找作用域优先级变为:局部.外部.全局和内建. 作用域由def.class.lambda等语句产生,if.try.for等语句并不会产生新的作用域.我们看下面的一个例子:  代码

[JAVA]变量作用域的问题

变量|问题 变量作用域的问题:public String getAnswer() {  String myAnswer;  try  {      BufferedReader bfReader=new BufferedReader(new InputStreamReader(System.in));      myAnswer=new String(bfReader.readLine().toString());   System.out.println("你输入的是:"+myAns