PHP变量作用域介绍

手册/FAQ (684) 2015-09-26 17:30:01

在PHP中变量主要有:内置超级全局变量,一般的变量、常量、全局变量、静态变量等。

 

内置超级全局变量可以在脚本的任何地方使用和可见。即如果我们在一个PHP页面中改变了其中的一个值,那么在其他PHP页面中使用时,它的值也会发生改变。

 

常量一旦被声明将可以在全局可见,也就是说,它们可以函数内外使用,但是这仅仅限于一个页面之中(包含我们通过include和include_once)包含进来的PHP脚本,但是在其他的页面中就不能使用了。

 

在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部,在函数内部的变量如果与全局变量名称相同,以函数内部的变量为准。函数内部使用的变量声明为全局变量时,其名称要与全局变量的名称一致,在这样的情况下,我们就可以在函数中使用函数外部的全局变量了,这样就可以避免上一种因为函数内部的变量与外部的全局变量名称相同而覆盖了外部变量这样的情况。

 

而在函数内部创建并声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值,最常见的情况就是在函数的递归执行的过程之中,在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。

 

超级全局变量的完整列表如下:

 

.$GOBALS 所有全局变量数组
.$_SERVER 服务器环境变量数组
.$_POST 通过POST方法传递给该脚本的变量数组
.$_GET 通过GET方法传递给该脚本的变量数组
.$_COOKIE cookie变量数组
.$_FILES 与文件上传相关的变量数组
.$ENV 环境变量数组
.$_REQUEST 所有用户输入的变量数组包括$_GET $_POST $_COOKIE 所包含的输入内容
.$_SESSION 会话变量数组

 

实例讲解:

 

<?php 
        $a = 4;
        function sendValue($x)
            {
               echo $x;
            }
        sendValue($a);
    ?>

 

讲解: $a定义在函数外,函数定义了参数,当函数被调用时,$a将以参数的形式被传递。因此上面代码能够正常运行。

 

<?php 
        $a = 4;
        function sendValue()
            {
               echo $a;
            }
        sendValue();
    ?>

 

讲解:当函数被调用时,$a不能以参数的形式被传递。所以上面代码不能够正常运行。                

THE END