PHP 用户定义的全局变量
示例
任何函数或类之外的范围都是全局范围。当PHP脚本包含另一个脚本(使用include或require)时,范围保持不变。如果脚本包含在任何函数或类的外部,则其全局变量包含在同一全局范围内,但是如果脚本包含在函数内部,则所包含脚本中的变量位于函数的范围内。
在函数或类方法的范围内,global关键字可以用于创建访问用户定义的全局变量。
<?php
$amount_of_log_calls = 0;
function log_message($message) {
//从函数范围访问全局变量
//需要这个明确的陈述
global $amount_of_log_calls;
//对全局变量的更改是永久的
$amount_of_log_calls += 1;
echo $message;
}
//在全局范围内时,可以使用常规全局变量
//没有明确说明“全局$variable”;
echo $amount_of_log_calls; //0
log_message("第一条日志消息!");
echo $amount_of_log_calls; //1
log_message("第二条日志消息!");
echo $amount_of_log_calls; //2从全局范围访问变量的第二种方法是使用特殊的PHP定义的$GLOBALS数组。
$GLOBALS数组是一个关联数组,其全局变量的名称为键,该变量的内容为该数组元素的值。注意$GLOBALS在任何范围内如何存在,这是因为$GLOBALS是一个超全局变量。
这意味着该log_message()函数可以重写为:
function log_message($message) {
//通过访问全局$amount_of_log_calls变量
//$GLOBALS数组。不需要'global$GLOBALS;',因为它
//是一个超全局变量。
$GLOBALS['amount_of_log_calls'] += 1;
echo $messsage;
}有人会问,为什么同时使用global关键字$GLOBALS来获取全局变量的值呢?主要原因是使用global关键字会将变量带入范围。然后,您将无法在本地范围内重用相同的变量名。