预定义变量
在线手册:中文 英文
PHP手册

超全局变量

超全局变量超全局变量是在全部作用域中始终可用的内置变量

说明

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是:

更新日志

版本 说明
4.1.0 超全局变量被引入到 PHP.

注释

Note: 变量可用性

默认情况下,所有的超全局变量都是可用的。但是,有一些指令会影响这种可用性。更多信息,参见文档 variables_order.

Note: 处理 register_globals

如果已经弃用的 register_globals 指令被设置为 on 那么局部变量也将在脚本的全局作用域中可用。例如, $_POST['foo'] 也将以 $foo 的形式存在。

相关信息,参见 FAQ “register_globals 对我有什么影响?

Note: 可变变量

在函数或类方法中,超全局变量不能被用作可变变量

参见


预定义变量
在线手册:中文 英文
PHP手册
PHP手册 - N: 超全局变量是在全部作用域中始终可用的内置变量

用户评论:

lskatz at gmail dot com (10-Oct-2008 04:51)

Tibor:
It's not a good idea to use $_ENV unless you are specifying an environmental variable.  This is probably a better example that I found on another page in php.net

<?php
function test() {
   
$foo = "local variable";

    echo
'$foo in global scope: ' . $GLOBALS["foo"] . "\n";
    echo
'$foo in current scope: ' . $foo . "\n";
}

$foo = "Example content";
test();
?>

Tibor > rocketmachine.com (06-Oct-2008 06:00)

You can use superglobals to make your variables available everywhere without declaring them global.

<?php

$_ENV
['mystring'] = 'Hello World';
$_ENV['myarray'] = array('Alpha', 'Bravo', 'Charlie');

function
test() {
    print
$_ENV['mystring'];
   
print_r($_ENV['myarray']);
}

test();

?>