这是一个人为的例子:
function test()
{
global $a;
$a=2;
}
test();
//here $a will report undefined variable
echo $a;
我现在以某种方式遇到这个问题,但我不能轻易地重现它!
修改
我的意思是include
之类的操作或类似时的操作
答案 0 :(得分:1)
您最近编辑过,说当您'包含'文件时会发生这种情况。
文件和全球化并没有真正相处。你实际上必须全局输出并进入文件。所以如果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;
之后调整test()
。但是,如果您在与echo $a
不同的文件中定义AND {{1}},则会导致全局错误。
我不确定这是否能回答你的问题,但是,这是包含系统中的缺陷。
答案 1 :(得分:0)
在您提到的地方获得未定义变量的一种方法是,当您$a
本地化为test()
而没有global $a;
时宣言。
<?php
function test()
{
//global $a;
$a=2;
}
test();
//here $a will report undefined variable
echo $a;
?>
另一个可能是你在<{strong> test()
之后调用函数echo
:
<?php
function test()
{
global $a;
$a=2;
}
//here $a will report undefined variable
echo $a;
test();
?>
变量a在打印时尚未初始化,并将导致Notice: Undefined variable: a
您提供的代码段应该可以正常使用。在您回显$a
时,它不再是未定义的,并且在函数test()
中被赋予了一个值。
答案 2 :(得分:0)
如果你在test()中执行此操作,可能会发生这种情况:
unset($GLOBALS['a']);
我怀疑你是不是,也许你可以更新你的帖子,以提供更符合你情况的代码样本。