2011-07-02 71 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; 
}