//获取函数外部的变量的方法
//global GLOBALS closure方法一:使用global关键字声明变量,但是在函数内修改变量后会影响变量在父作用域中的值
$external = 'hello';
echo '设置$external的值是:'.$external.'-------';
function getExtVal1(){
global $external;
$external = 'world';
echo '我获取到的变量$external的值是:'.$external.'-------';
}
getExtVal1();
echo '函数执行后$external的值变为:'.$external.'<br>';
输出结果:
设置$external的值是:hello-------我获取到的变量$external的值是:world-------函数执行后$external的值变为:world
方法二:使用PHP的超全局变量,同样会影响变量在父作用域中的值$external = 'hello1';
echo '设置$external的值是:'.$external.'-------';
function getExtVal2(){
$GLOBALS['external'] = 'world2';
echo '我获取到的变量$external的值是:'.$GLOBALS['external'].'-------';
}
getExtVal2();
echo '函数执行后$external的值变为:'.$external.'<br>';
输出结果:
设置$external的值是:hello1-------我获取到的变量$external的值是:world2-------函数执行后$external的值变为:world2
$external = 'hello3';
echo '设置$external的值是:'.$external.'-------';
$example = function () use ($external) {
$external = 'world3';
echo '我获取到的变量$external的值是:'.$external.'-----';
};
$example();
echo '函数执行后$external的值变为:'.$external.'<br>';
输出结果:
设置$external的值是:hello3-------我获取到的变量$external的值是:world3-----函数执行后$external的值变为:hello3
个人知识积累大神勿喷