2011-07-02 200 views
1

出於某種原因,該功能將不會返回值ciao功能沒有返回值

$a = "ciao"; 

function a() { 
    return $a; 
} 

我不知道爲什麼。

+3

閱讀http://php.net/manual/en/language.variables.scope.php。它在頂部解釋。 – Tomalak

回答

3

函數只能返回他們的變量在當地的空間,稱爲範圍:

$a = "ciao"; 

function a() { 
    $a = 'hello`; 
    return $a; 
} 

將返回hello,因爲在a(),$a是它自己的變量。如果您需要在函數中的變量,它傳遞的參數:

$a = "ciao"; 

function a($a) { 
    return $a; 
} 
echo a($a); # "ciao" 

順便說一句,如果啓用NOTICES to be reportederror_reporting(-1);),PHP就會給你注意到return $a在你的原代碼使用未定義的變量。

3

在PHP中,函數不能訪問全局變量。在函數體中使用global $a或者傳遞$ a的值作爲參數。

+5

不建議使用'global',建議使用函數參數。 – hakre

2

$a不在功能範圍內。

PHP不適用於類似於JS的封閉範圍,例如,如果您希望訪問函數中的外部變量,您必須通過它來明智地使用它,或使用global使其可用,這是皺眉。

$a = "ciao"; 

function a() { 
    global $a; 
    return $a; 
} 

,或者在PHP5.3封閉風格+

function a() use ($a) { 
    return $a; 
}