代码1:函数内部使用函数外部变量错误方法
$name = 'fish';
function animal() {
echo $name;
}
animal();
运行结果:Notice: Undefined variable: name in D:\wamp\www\index.php on line 5
由此得知,animal()方法中的 name和方法外部的 name不是同一个变量。
如何才能在函数内部访问到函数外部的变量呢?可以在函数内部或者外部将 name变量定义为全局变量,在 name之前加上global即可;如下所示:
代码2:函数内部使用函数外部变量正确方法
$name = 'fish';
function animal() {
global $name;
echo $name;
}
animal();
或
global $name;
function animal() {
$name = 'fish';
echo $name;
}
animal();
运行结果:fish
那么,如果$name变量是在函数内部定义的,能够在函数外部或者别的函数中使用到吗?答案是显而易见的,不能,这就是局部变量,可以看下下面的代码段:
代码3:函数外部使用函数内部变量错误方法
function animal() {
$name = 'fish';
}
echo $name;
运行结果:Notice: Undefined variable: name in D:\wamp\www\index.php on line 6
$name变量只能在animal()函数内部有意义。问题来了,如果我非要想在函数外部也能使用到函数内部定义的变量该怎么办?
“可以在函数内部定义变量时将其声明为global”,请看如下代码段:
代码4:函数外部使用函数内部变量正确方法
function animal() {
global $name;
$name = 'fish';
}
animal();
echo $name;
运行结果:fish
可以看到,我们先执行了animal()方法,然后再使用 name变量,就有效果了,当然,如果你没有执行animal()函数,那么,该段程序根本就没有声明变量 name的操作,所以,需要记住的是,函数只有被调用了才有意义,且程序执行的顺序时从上到下,从左往右的。