PHP中默认的变量作用域是在函数内部,这个和js不同,js是默认为全局作用域。所以今天在调用php函数内部变量的时候遇到了问题。
解决方法:
1、在所调用的函数内部变量前面声明为global。
$b=0,$c=1;
function ABC(){
global $b;
echo $b;
}
输出:0;
但这样遇到的问题就是如果再函数之前调用函数ABC()中的$b,同样回报未定义错误。
2、在所调用的函数内部变量前面声明为static。
$b=0,$c=1;
function ABC(){
static $b;
$b=$b+1;
echo $b;
}
输出:1;
static我理解为就是在虽然在函数的内部但相当于扩大了变量的作用域,下次在调用函数内部的时候就不会出现重新定义的问题,但仍然没有解决在函数之前调用函数内部变量的问题。
3、使用类继承。
class ABC {
function ABC(){
$b=0;
echo $b;
}
输出:0;
}
class ABCD extends ABC{
$b=$this->b;
echo $b;
}
输出:error;
同样无法继承方法中的变量。
后来发现,PHP本身就是嵌套在HTML中的呀,为何不直接将b存入浏览器,setcookie('b',"$b");$_COOKIE['b'];