以下代码会产生警告:
<?php
$GLOBALS['foo'] = "Example content<BR><BR>";
echo $foo; // that works!
Test();
function Test()
{
echo $foo; // that doesn't work!
}
?>
警告是:
Notice: Undefined variable: foo
怎么来的 ?
以下代码会产生警告:
<?php
$GLOBALS['foo'] = "Example content<BR><BR>";
echo $foo; // that works!
Test();
function Test()
{
echo $foo; // that doesn't work!
}
?>
警告是:
Notice: Undefined variable: foo
怎么来的 ?
在函数内部,$foo
除非您将其称为 as$GLOBALS['foo']
或 use ,否则超出范围global $foo
。用 定义全局$GLOBALS
,虽然它提高了可读性,但不会自动保留变量名称以在所有范围内使用。您仍然需要在较低范围内显式调用全局变量才能使用它。
function Test()
{
echo $GLOBALS['foo'];
// Or less clear, use the global keyword
global $foo;
echo $foo;
}
甚至可以在同一个函数中同时拥有本地和全局$foo
(尽管完全不推荐):
$GLOBALS['foo'] = "foo! :)";
function getFoo()
{
$foo = "boo :(";
echo $GLOBALS['foo'] . "\n"; // Global $foo
echo $foo; // Local scope $foo since it has no global keyword
}
getFoo();
// foo! :)
// boo :(
查看有关变量范围的 PHP 文档和$GLOBALS
文档以获取更多示例。
您将需要始终通过 $GLOBALS 数组引用它。阅读变量范围以获得完整的描述性答案。
<?php
$GLOBALS['foo'] = "Example content<BR><BR>";
echo $foo; // that works!
Test();
function Test()
{
echo $GLOBALS['foo']; // that doesn't work!
}
?>
您可以将代码更改为:
function Test() {
global $foo;
echo $GLOBALS['foo'];
echo $foo;
}
您必须声明您从 PHP 函数访问的全局变量。见: http: //php.net/manual/en/language.variables.scope.php