变量范围
变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。
<?php
$a = 1; /* global scope */
function Test()
{
echo $a; /* reference to local scope variable */
}
Test();
?>
这段代码将不会有输出,因为在函数内部所调用的a并没有赋值。
方法一:可以用关键字global来解决这个问题(全局范围i内引用变量)
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
此时输出的值为3
方法二:用$GLOBALS替代global
<?php
$a = 1;
$b = 2;
function Sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();
echo $b;
?>
静态变量
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。
<?php
function Test()
{
$a = 0;
echo $a;
$a++;
}
?> //所有输出都是0
<?php
function test()
{
static $a = 0;
echo $a;
$a++;
}
?> //逐个输出0、1、2、3...