2011-09-04 2 views
2

나는 PHP 파일이 있습니다PHP - 공지 사항 : 정의되지 않은 변수

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

을 그리고 난이 오류를 얻을 : 32 비트 W7 @ XAMPP를 사용

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

합니다.

+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범위의 글로벌 범위에 정의되어 있지만 함수 범위에는 정의되어 있지 않습니다.

  1. 가 글로벌 (보통 나쁜 솔루션)
  2. 이 함수에 새 인수를 추가 확인하고 함수
  3. 에 변수를 전달 : 당신이 당신의 기능을 $a에 포함 된 내용을 알고 싶다면, 당신은 두 가지 선택이
1

권고 사항대로 전역을 사용할 수는 있지만 나쁜 습관입니다. 함수 밖에서 함수에 변수가 필요한 경우 매개 변수로 전달하십시오.

$a = 1; 
function test($a) { 
    echo $a; 
} 
test($a); 
관련 문제