2011-07-02 10 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" 

을 BTW, 당신은 NOTICES to be reported (error_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; 
} 
관련 문제