PHP 变量和常量:声明变量
问题
我们在 PHP 编程中,使用变量是不可避免的,那么我们在 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
的使用
<?php
$var = '这是一个全局变量';
function foo()
{
global $var;
echo "使用关键词 global 输出 \$var 的值为:$var";
}
function foo2()
{
echo "使用超全局变量 \$GLOBALS 输出 \$var 的值为:{$GLOBALS['var']}";
}
foo();
echo '<br>';
foo2();
例 1 运行结果:
使用关键词 global 输出 $var 的值为:这是一个全局变量
使用超全局变量 $GLOBALS 输出 $var 的值为:这是一个全局变量
从例 1 的运行结果我们可以看出,我们可以通过使用关键词 global
和超全局变量 $GLOBALS
在函数中使用脚本中的全局变量 $var
。
例 2 —— 比较函数中的局部变量与静态变量
<?php
function bar()
{
$var = 0;
$var++;
return $var;
}
echo '函数 bar 第一次的输出结果:' . bar() . '<br>';
echo '函数 bar 第二次的输出结果:' . bar() . '<br>';
function foo()
{
static $var = 0;
$var++;
return $var;
}
echo '函数 foo 第一次的输出结果:' . foo() . '<br>';
echo '函数 foo 第二次的输出结果:' . foo();
例 2 运行结果:
函数 bar 第一次的输出结果:1
函数 bar 第二次的输出结果:1
函数 foo 第一次的输出结果:1
函数 foo 第二次的输出结果:2
从例 2 的运行结果可以看出,局部变量的值在函数 bar
第二次被调用时,会在内部被重新赋值为 0
,然后自增为 1
。而静态变量的值在函数 foo
第二次被调用时,仍然保留函数 foo
在第一次被调用后的值 1
,并自增为 2
。