问题
我们在 PHP 编程中,使用变量是不可避免的,那么我们在 PHP 代码中如何正确地声明一个变量呢?
$var = '我是变量';
说明
在 PHP 编程中,我们如果要使用一个 PHP 变量,首先我们必须遵循PHP 变量命名规则。
使用变量不仅需要遵循 PHP 变量命名规则,我们还必须遵循 PHP 变量的作用域规则:
全局变量:如果声明的变量不在 class,function,if / while / for 等语法结构内部,而要在 class,function,if / while / for 等语法结构内部使用,需要通过关键词 global 或者超全局变量 $GLOBALS 进行使用;
静态变量:使用关键词 static 声明的变量,静态变量的值会保留至脚本结束;
局部变量:在 class,function,if / while / for 等结构语句内部声明的普通变量。
示例
例 1 —— global 和 $GLOBAL 的使用
$var = '这是一个全局变量';
function foo()
{
global $var;
echo "使用关键词 global 输出 \$var 的值为:$var";
}
function foo2()
{
echo "使用超全局变量 \$GLOBALS 输出 \$var 的值为:{$GLOBALS['var']}";
}
foo();
echo '
';
foo2();
例 1 运行结果:
使用关键词 global 输出 $var 的值为:这是一个全局变量
使用超全局变量 $GLOBALS 输出 $var 的值为:这是一个全局变量
从例 1 的运行结果我们可以看出,我们可以通过使用关键词 global 和超全局变量 $GLOBALS 在函数中使用脚本中的全局变量 $var。
例 2 —— 比较函数中的局部变量与静态变量
function bar()
{
$var = 0;
$var++;
return $var;
}
echo '函数 bar 第一次的输出结果:' . bar() . '
';
echo '函数 bar 第二次的输出结果:' . bar() . '
';
function foo()
{
static $var = 0;
$var++;
return $var;
}
echo '函数 foo 第一次的输出结果:' . foo() . '
';
echo '函数 foo 第二次的输出结果:' . foo();
例 2 运行结果:
函数 bar 第一次的输出结果:1
函数 bar 第二次的输出结果:1
函数 foo 第一次的输出结果:1
函数 foo 第二次的输出结果:2
从例 2 的运行结果可以看出,局部变量的值在函数 bar 第二次被调用时,会在内部被重新赋值为 0,然后自增为 1。而静态变量的值在函数 foo 第二次被调用时,仍然保留函数 foo 在第一次被调用后的值 1,并自增为 2。