這是一個人爲的例子: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