局部变量
在函数内部声明的变量(包括函数的参数),只能在函数内部调用,这叫做局部变量,函数执行完毕后变量释放,在函数外部无法调用
$weather = sunny; function demo () { $weather = rainny; echo "Today is $weather"; } demo (); //输出Today is rainny
全局变量
在函数外部声明的变量,可以在每个函数中使用(注意顺序问题:全局变量要声明在函数调用之前才可以使用),如果要在函数内部使用函数外部的变量,需要使用global关键字将外部变量引入
$weather = sunny; function demo () { global $weather; //引入外部变量weather $weather = rainny; //变量被重新赋值 echo "Today is $weather"; } demo (); //输出Today is rainny
$weather = sunny; function demo () { $weather = rainny; //局部变量 global $weather;//全局变量被引入 echo "Today is $weather"; } demo (); //输出Today is sunny
function demo () { $weather = rainny; global $weather; echo "Today is $weather"; } $weather = sunny; //只要全局变量声明在函数调用之前都可以使用,否则不能被调用 demo (); //输出Today is sunny
常量
常量则不同于变量,只要定义了,就可以直接在函数里使用,还有九个全局数组
define("Content","hello world"); $_POST['demo'] = 1; function demo () { echo Content."<br>"; echo $_POST['demo']; } demo ();//输出 hello world 和 1
静态变量
在函数中声明静态变量,只在第一次调用时被声明,存在初始化静态段中,之后再继续调用会到初始化静态段中找,如果有,直接使用,而不会再重新被声明,与全局变量类似,不会再函数执行完毕后释放,而是在整个脚本执行完后释放
function demo () //非静态变量,连续调用返回值永远是1 { $a = 0; $a++; return $a."<br>"; } echo demo (); echo demo (); echo demo ();
function demo() { static $a = 0; //静态变量:在函数中声明静态变量,只在第一次调用时被声明,存在初始化静态段中,之后再继续调用会到初始化静态段中找,如果有,直接使用,而不会再重新被声明,与全局变量类似,不会再函数执行完毕后释放,而是在整个脚本执行完后释放 $a++; echo $a."<br>"; } demo(); // 输出1 demo(); // 输出2 demo(); // 输出3