我有以下代码:
<?php
$a = 1;
function_one();
?>
<?php
function_one() {
global $a;
function_two();
?>
<?php
function_two() {
function_three();
}
?>
<?php
function_three() {
echo ($a);
}
?>
在function_three()
内,变量$a
无法访问,尽管我在function_one()
中将其声明为全局变量,该变量调用function_two()
,而后者依次调用function_three()
。为什么呢?我不得不在global $a
内的function_three()
上再次声明,以获取$a
的价值。
是否有一种方法可以使$a
内部可以访问function_three()
而又不必再次声明global
?是否有另一种方法可以使外部变量在function
内部可见,而无需使用global
并传入函数的参数?
答案 0 :(得分:1)
您可以使用$GLOBALS
<?php
$GLOBALS['a'] = 1;
function function_one() {
function_two();
}
function function_two() {
function_three();
}
function function_three() {
echo $GLOBALS['a'];
}
function_one();
?>
输出:
1
或者只是将全局对象导入本地范围,如提到的@DarkBee:
<?php
$a = 1;
function function_one() {
function_two();
}
function function_two() {
function_three();
}
function function_three() {
global $a;
echo $a;
}
function_one();
?>
输出:
1