回答
你忘了使用global
function test()
{
global $a;
echo "$a <br/>";
}
$a = 5;
test();
...當然你不應該使用這個。 – 2011-10-30 23:23:00
使用參數代替'test($ a)' – samura
當upvoted答案*完全證明了這一點時,說「不要這樣做」有點*豐富*。 –
函數在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。他們可以是一個糟糕的程序設計,如果你過分依賴他們的跡象。
我知道,但我知道,但OP:*請避免不必要的'全局'變量*。 –
另外,'$ GLOBALS ['a'] = 5;'可以和'global $ a;'一起使用。雖然我承認我沒有掌握區別。 –
@JaredFarrish:噢,雖然我從未使用過'$ GLOBALS'。編輯:) – alex
- 1. 在VB.NET中識別全局變量
- 2. 全局變量在函數中沒有識別
- 3. 爲什麼我的全局變量不是全局變量?
- 4. 即使將它變成全局變量也不被識別爲外部函數
- 5. 爲什麼不將全局變量值傳遞給函數?
- 6. 爲什麼全局變量不能在Python的不同函數中工作?
- 7. 爲什麼我的函數中沒有全局變量?
- 8. 全局靜態變量在本地函數中突然變爲0 - 爲什麼?
- 9. 非局部變量和全局變量有什麼區別?
- 10. 功能無法識別全局變量
- 11. 全局變量無法識別Javascript
- 12. 爲什麼我的全局變量在函數中不可訪問?
- 13. 爲什麼我不能在我的js函數中訪問全局變量?
- 14. 爲什麼全局變量不是在匿名函數中設置的?
- 15. 爲什麼Javascript全局變量不是全局的?
- 16. 全局變量在函數不更新
- 17. 爲什麼這個函數裏面的變量是全局的?
- 18. 爲什麼addEventListener函數無法獲取全局變量?
- 19. C:我的函數中的變量無法識別,因爲我的變量不是全局的
- 20. 在javascript中爲變量分配函數時識別變量
- 21. 函數不會改變全局變量
- 22. 爲什麼isset()函數不能識別的變量,即使它存在
- 23. 爲什麼即使在指定全局之後,函數也不會改變全局變量
- 24. 從函數傳遞局部變量變爲全局變量
- 25. 爲什麼全局函數在角1.3
- 26. 爲什麼Drupal中定義的函數不能訪問全局變量?
- 27. 變量不會在全局上下文中註冊,爲什麼?
- 28. 爲什麼全局變量不在swift 3中更新值?
- 29. 爲什麼#include打破全局變量?
- 30. 爲什麼局部變量不能在聲明和全局變量分配?
*(相關)* [全球功能](http://stackoverflow.com/questions/5166087/global-in-functions/5166527#5166527) – Gordon
您確定'
'沒有輸出嗎? –
@JaredFarrish:[它應該錯誤](http://codepad.viper-7.com/FZwQbz),也許錯誤報告是關閉的。 – alex