变量作用域:1,全局作用域global,2,局部作用域,3,静态作用域
1,与js相似,变量写在函数以外叫做全局变量,写在函数以内叫做局部变量。
2,写在函数内和写在函数外可以同一个变量名,这样就会导致变量的作用域提升。
$a=3;
function abc(){
$b=1;
echo $b;
echo $a; //此处会报错(这里的a不存在)局部拿不到全局
}
abc();
echo $b;//报错(这里b不存在)全局拿不到局部
报错内容为Undefined variable a in E:\test\index.php on line 9
a 变量未被定义。
也就是说全局变量在局部变量中拿不到。局部变量在全局中也拿不到。
全局变量$a在局部变量中调用不了是因为没有在局部变量中声明它
$a=3;
function abc(){
$b=1;
global a;
echo $b;
echo $a;//3
}
abc();
声明在函数外的变量是全局变量,但是在函数中使用时必须使用global指向全局变量,否则它会认为是局部变量。
PHP中换行使用."
";
静态变量
静态变量类似于我们js 中的闭包,静态变量应用于函数之中。
function abc(){
static $d=5;
$d++;
echo $d;
}
abc();
当我执行一次abc()时,$d的值为6
当我执行两次abc()时,$d的值为7
abc();
abc()
当我执行三次abc()时,$d的值为8;
abc();
abc();
abc();
静态变量应用于函数中,静态变量当函数运行完成后不销毁,下次进入函数继承上次的值继续运算
变量域的提升,在函数内的变量,如果需要声明或者使用函数外的变量可以使用global
$x=3;
function abc(){
global $x;
$x=6;
echo $x;
}
abc();
echo $x;