根据大多数编程语言的范围规则,我可以访问在它们内部的函数之外定义的变量,但为什么这段代码不起作用?
<?php
$data = 'My data';
function menugen() {
echo "[" . $data . "]";
}
menugen();
?>
输出是 []
。
原文由 Amin Gholibeigian 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据大多数编程语言的范围规则,我可以访问在它们内部的函数之外定义的变量,但为什么这段代码不起作用?
<?php
$data = 'My data';
function menugen() {
echo "[" . $data . "]";
}
menugen();
?>
输出是 []
。
原文由 Amin Gholibeigian 发布,翻译遵循 CC BY-SA 4.0 许可协议
上面回答了访问函数内部全局变量的正确方法!
但是,如果您出于某种原因不想使用 global
关键字,也不想使用 $GLOBALS
变量( _例如,您有多个功能并且您“厌倦了”编写 global $variable;
每次_),这里有一个解决方法:
$variable = 42; // the global variable you want to access
// write a function which returns it
function getvar(){
global $variable;
return $variable;
}
//--------------
function func1()
{
// use that getter function to get the global variable
echo getvar(); // 42
}
function func2()
{
echo getvar(); // 42
}
...
原文由 hlorand 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.4k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答858 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答915 阅读
1 回答899 阅读
1 回答828 阅读
要解决所提出的问题,它不起作用,因为您需要在函数本身中声明要访问的全局变量:
否则,您可以以
$GLOBALS['data']
的形式访问它,请参阅 _变量范围_。即使有点离题,我建议您 完全避免使用全局变量, 而更喜欢将数据作为参数传递。
在这种情况下,上面的代码如下所示: