为什么打印空行而不是5?
function test()
{
echo "$a <br/>";
}
$a = 5;
test();
Run Code Online (Sandbox Code Playgroud)
PHP中的函数不继承全局范围或父范围(除非使用匿名函数use()).
您可以使用该global关键字来访问它们.
function test()
{
global $a;
echo "$a <br/>";
}
Run Code Online (Sandbox Code Playgroud)
贾里德法里丝还指出,利用全球关联数组$GLOBALS它包含所有的全局变量和,像任何超级全球如$_POST,$_GET等,在范围上随处可见.
function test()
{
echo "$GLOBALS[a] <br/>";
}
$a = 5;
test();
Run Code Online (Sandbox Code Playgroud)
你可以使用匿名函数 ......
$a = 5;
$test = function() use ($a) {
echo $a;
};
$test();
Run Code Online (Sandbox Code Playgroud)
作为脚注,尽量不要依赖全局变量.如果你过分依赖它们,它们可能是程序设计不佳的标志.