PHP面试中变量作用域是面试中常常出现的问题,也是必考的问题,下面就给大姐讲解一下在面试中注意的点:
# living example one
$A=”Hello “;
functionprint_A()
{
$A = “phpmysql !!”;
global $A;
//global 全局变量 函数是独立的模块 $A外界定义的
echo $A;
}
echo $A; //output Hello
print_A(); //out pot Hello
在你将$A定义为全局变量的时候,并未修改$A的值
考点:
局部变量和全局变量的作用域,函数外部变量为全局变量(本页面以及引入页面),函数内部变量为局部变量
易错点:
答题者区分不清局部变量和全局变量的概念,导致不能准确写出函数输出结果
分析:
1)局部变量只能在函数内部产生作用以及被使用,无论外部怎么修改都将失效,这样也就保证了我们在同一个页
面定义相同名称的变量时候不会出现异常
2)全局适用于多个函数以及多个页面都需要用到时可声明,这样也就能节省内存空间,但是应用时重复定义被覆
盖导致异常的问题也要注意
# living example two
function test(){
$num = 10;
echo $num;
}
test(); //output 10
echo $num;
$num = $num+10;
echo $num;
分析:
以上代码会导致一个变量未定义的waring,我们尚且忽略
1)$num是一个局部变量,那么你在函数内部输出,并且调用函数方法时候会输出10,但是无论你在外面怎么操作
$num这个变量两者都不是同一个变量,因此也不会产生实质性的效果