一、全局变量
全局变量通常使用关键字 global 来声明,全局变量访问的第一个办法:
<?php
$a = 1;
$b = 2;
function sum()
{
global $a, $b;
$b = $a + $b;
}
sum();
echo $b;
结果输出 3。在函数中声明了全局变量 a 和a和b 之后,对任一变量的所有引用都会指向其全局版本。对于一个函数能够声明的全局变量的最大个数,PHP 没有限制。
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:
<?php
$a = 1;
$b = 2;
function sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
sum();
echo $b;
结果输出为:3
二、静态变量
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。
<?php
function test()
{
static $a = 0;
echo $a.PHP_EOL;
$a++;
}
test();
test();
输出结果为:0 1
三、可变变量
一个变量的变量名可以动态的设置和使用,例如:
<?php
$a = 'hello';
$$a = 'world';
var_dump($a,$hello);
结果输出为:
string(5) "hello"
string(5) "world"
如果存在多个可变变量,则会按变量被定义的时间顺序依次从后往前取值循环:
<?php
//You can even add more Dollar Signs
$Bar = "a";
$Foo = "Bar";
$World = "Foo";
$Hello = "World";
$a = "Hello";
$a; //Returns Hello
$$a; //Returns World
$$$a; //Returns Foo
$$$$a; //Returns Bar
$$$$$a; //Returns a
$$$$$$a; //Returns Hello
$$$$$$$a; //Returns World
//... and so on ...//
?>