2011-09-04 103 views
2

我有一個PHP文件:PHP - 注意:未定義的變量

<?php 
$a = 1; 
function test(){ 
    echo $a; 
} 
test(); 
?> 

而且我得到這個錯誤:

Notice: Undefined variable: a in X:\...\test.php on line 4 

使用XAMPP @ 32位W7。

+0

它因爲功能範圍。您需要編寫全局$ a;在函數的頂部,但是你應該避免全局變量。在php –

+2

http://php.net/manual/en/language.variables.scope.php – NullUserException

+0

閱讀一下關於範圍PHP沒有真正的全局變量。如果你想要這個工作,你需要鏈接到共享範圍。 (例子太抽象了,但它經常被新手濫用;函數參數通常是最好的方法。) – mario

回答

7

變量具有函數範圍。 $a裏面的功能和$a以外的功能不一樣。在函數裏面你還沒有定義變量$a,所以它不存在。將它傳遞給函數:

$a = 1; 
function test($a) { 
    echo $a; 
} 
test($a); 
1

您無法理解變量範圍$a定義在全局範圍內,但不在函數範圍內。如果你希望你的函數知道$a包含,你有兩個選擇:

  1. 使它成爲全球的(通常是一個壞的解決方案)
  2. 添加一個新的參數給你的函數,你的變量傳遞給你的函數
1

您可以使用全局的建議,但這是不好的做法。如果您需要函數外的函數中的變量,則將它們作爲參數傳遞。

$a = 1; 
function test($a) { 
    echo $a; 
} 
test($a);