大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖。
The global keyword
首先,一个使用 global 的例子:
例子 7-1. 使用 global
<?php $a = 1; $b = 2;
function Sum() { global $a, $b;
$b = $a + $b; }
Sum(); echo $b; ?> | |
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:
例子 7-2. 使用 $GLOBALS 替代 global
<?php $a = 1; $b = 2;
function Sum() { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; }
Sum(); echo $b; ?> | |
使用静态变量
变量范围的另一个重要特性是静态变量(static variable)。静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。看看下面的例子:
例子 7-6. 静态变量与递归函数
<?php function Test() { static $count = 0;
$count++; echo $count; if ($count < 10) { Test (); } $count--; } ?> |
在一个函数域内部用
global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。