php变量作用域的浅析
1,函数体外定义的变量为全局变量,除函数体内不能使用在整个脚本的其他位置均可以使用。
如:
<?php
$g=10;//函数体外定义的全局变量
function ex(){
echo $g;//报错Notice: Undefined variable: g
}
?>
2,函数体内定义的变量,只能在函数体内使用不能再函数体外用。
<?php
function ex(){
$g=10;
}
echo $g;报错Notice: Undefined variable: g
?>
3,$GLOBALS数组与global关键字
在上面1,2两条已经说明了 函数体内不能使用函数体外定义的变量,函数体外也不能使用函数体内的变量。如果想使用怎么办呢?
$GLOBALS数组,这个数组是php的内置数组,里面存的除了php存储的一些如$_SERVER $_ENV $_ SESSION $_ GET 还会存储程序员在脚本中自定义的全局变量。
如:
<?php
$outvar=10;/*这样php就会将这个变量存储在$GLOBALS数组中*/
?>
在函数体内是可以使用 $GLOBALS数组中的变量的,但是不能像在函数体外直接用 $varname的形式使用,必须用$GLOBALS[‘varname’]的形式使用,因为或者用global函数直接说明一下这个函数用的是全局变量的一个函数不是函数体内的变量。
如:
<?PHP
function ex(){
global $outvar;/*相当进行了两部操作,1,将outvar存入$GLOBALS数组中,2,声明使用的是$GLOBALS数组中的变量*/
echo $outvar
}
?>