我的文件 a.php 看起来像
function func_1() {
inlude_once(b.php);
$somevar = 'def';
func_2($somevar);
}
和 b.php 看起来像
$some_global_var = 'abc';
function func_2($var) {
global $some_global_var;
echo $some_global_var.$var;
}
由于某种原因,我只得到 def ,为什么func_2看不到$ some_global_var?
答案 0 :(得分:2)
因为您忘记了func_1
的范围。因此,当您包含您的定义时,这就是您的代码在PHP中的显示方式
function func_1() {
$some_global_var = 'abc'; // <- this is inside the scope of the parent function!
function func_2($var) {
global $some_global_var;
echo $some_global_var.$var;
}
$somevar = 'def';
func_2($somevar);
}
您正在 func_1
内进行。因此,变量在全球范围内从未真正可用。如果您在外部定义$some_global_var = 'abc';
,那么它就在全局范围内。
你应该做的是将此作为参数注入。全局是一种不好的做法
function func_1() {
$some_global_var = 'abc';
function func_2($var, $var2) {
echo $var2 . $var;
}
$somevar = 'def';
func_2($somevar, $some_global_var);
}
答案 1 :(得分:0)
将global
放在它前面。
根据PHP文档
在函数外部使用全局关键字不是错误。如果文件包含在函数内部,则可以使用它。
您可能遇到包含文件妨碍的问题