这是一个人为的例子:PHP会在何时发生?
function test()
{
global $a;
$a=2;
}
test();
//here $a will report undefined variable
echo $a;
我现在满足这一问题,通过某种方式,但我不能以简单的方式重现!
编辑
我的意思是像include
或类似的操作由当你得到未定义的变量在你提到的地方
这是一个人为的例子:PHP会在何时发生?
function test()
{
global $a;
$a=2;
}
test();
//here $a will report undefined variable
echo $a;
我现在满足这一问题,通过某种方式,但我不能以简单的方式重现!
编辑
我的意思是像include
或类似的操作由当你得到未定义的变量在你提到的地方
的一种方法是,当你做$a
本地功能test()
通过没有global $a;
声明。
<?php
function test()
{
//global $a;
$a=2;
}
test();
//here $a will report undefined variable
echo $a;
?>
其他可能是你调用的函数test()
后的echo
:
<?php
function test()
{
global $a;
$a=2;
}
//here $a will report undefined variable
echo $a;
test();
?>
的变量尚未被打印的时候初始化,并会导致Notice: Undefined variable: a
您提供的代码段应该可以正常工作。在你回应$a
的地方,它没有更多的未定义,并已在函数test()
中给出了一个值。
这不是我遇到的问题。函数调用后有'global'声明和回显。 – user198729 2009-12-25 05:13:21
你最近编辑说这是发生在你'包括'一个文件。
文件和全球化并不真正相处。你实际上不得不将Global放到一个文件中。所以,如果test1.php有这个代码
$a = 5;
和test2.php过这样的代码:
$a = 3;
和test3.php过这样的代码:
$a = 10;
最后(是的,太多文件)testMaster.php有这个代码
include 'test1.php';
include 'test2.php';
include 'test3.php';
echo $a;
会有一个未定义的变量错误。你将不得不在每个文件中单独使用全局变量,以便全部设置。
现在,我敢肯定,这会不会影响你给我们,或者如果function test()
被列入,然后叫test();
和后马上你把echo $a;
代码。但是,如果您定义并在与您的echo $a
不同的文件中调用test()
,则会导致全局错误。
我不确定这是否回答您的问题,但是,这是包含系统中的缺陷。
它在这里很好地工作,输出10. – user198729 2009-12-25 06:19:02
如果你这样做内部测试(它可能发生):
unset($GLOBALS['a']);
我怀疑你是,虽然,也许你可以更新您的文章提供了代码示例,更好地类似于您的情况。
不,我没有做这种愚蠢的事情。 – user198729 2009-12-25 06:19:42
代码对我来说工作得很好...... – 2009-12-25 04:45:22
是的,所以问题是'何时'它不起作用,我不能以简单的方式重现它! – user198729 2009-12-25 04:46:10
正如其他人所指出的那样,这是对“全球”的滥用。 'global'的目的是在一个函数的命名空间中创建一个已经定义的全局变量,而不是在全局命名空间中创建一个新变量。 – GZipp 2009-12-25 13:37:39