为什么打印空行而不是5行?
function test()
{
echo "$a <br/>";
}
$a = 5;
test();
答案 0 :(得分:6)
PHP中的函数不继承全局范围或父范围(除非使用带有use()
的匿名函数)。
您可以使用global
关键字来访问它们。
function test()
{
global $a;
echo "$a <br/>";
}
Jared Farish还指出使用全局关联数组$GLOBALS
,它包含所有全局变量,并且像任何超级全局变量一样,如$_POST
,$_GET
等,到处都是。
function test()
{
echo "$GLOBALS[a] <br/>";
}
$a = 5;
test();
您可以使用anonymous function ...
$a = 5;
$test = function() use ($a) {
echo $a;
};
$test();
作为脚注,try not to rely on global variables。如果你过分依赖它们,它们可以表示程序设计不佳。
答案 1 :(得分:2)
您忘记使用global
function test()
{
global $a;
echo "$a <br/>";
}
$a = 5;
test();