起步 - 变量作用域 ¶
作者:KK
发表日期:2016.3.15
PHP的变量作用域控制比JS的严格一些
JS是外部的代码不能调用内部的变量,但内部可以调用外部的变量
但PHP是内部和外部都不能直接互相调用
这样的代码运行时会出错的
$a = 1;
function test(){
echo $a; //这里调用了函数外面的a变量,在PHP里面是禁止这么做的,所以程序会运行出错,不会输出数字1
}
test();
全局变量和局部变量 ¶
当我们直接在脚本里写下一个变量时,这个变量就已经是全局变量,就像JS代码一样
但是当变量存在于一个函数体里面的时候,它就是局部变量
$a = '11'; //这个是全局变量
echo $a; //此时输出的是全局变量a
test();
function test(){
$a = 22; //这个是局部变量,与全局变量是两个不同的,就算同名也不会互相冲突
echo $a; //此时输出的是局部变量a
}
结果就是"1122"
global
关键字引用全局变量 ¶
我上面说函数不能直接使用外部变量,但它可以通过一些手段来使用,使用global
关键字就可以
$a = 11;
test();
function test(){
global $a; //这是声明要引用外部的变量a
echo $a;
}
这样就会输出"11"了,但现在的编程方法中基本很少用这种手段了,不提倡这种做法.函数里面要使用外面的值时,一般通过函数参数传递进去
注意global关键字是用于引用全局变量的,非全局变量是不能引用的,比如这样:
a();
function a(){
$age = 18;
b();
}
function b(){
global $age;
echo $age;
}
这个代码中如果b函数想用global关键字引用a函数里定义的$age变量的话会失败,因为a函数里的$age不是全局变量,而是一个局部变量,真要实现b函数使用$age的话,只能在a里面调用b时通过函数参数传递进去