2009-02-06 2 views

답변

7

사용 get_defined_vars()을 (array_key_exists와 그것에 대해 현재 범위에 정의 된 변수의 배열 한 후 테스트를 얻을 수 있습니다)

편집 : 당신의 존재를 테스트하는 기능을 원한다면

당신이 그렇게 좋아 하나 만들 것입니다 :

function varDefined($name,$scope) { 
    return array_key_exists($name, $scope); 
} 

을하고 주어진 범위에과 같이 사용

$exists = varDefined('foo',get_defined_vars()); 

하는 작업을해야 모든 범위.

+0

그게 내가 PHP에서 일어나는 일이기 때문에 내가 생각한 유일한 방법이다. var_dump ($ random_nonexistent_var); // NULL 감사합니다. – adamJLev

1

아주 예쁜,하지만

array_key_exists('var', $GLOBALS); 

(사실 방법 중 하나로 평가 [그것은 정말 @ 연산자를 사용하여 오류를 억제하는 것이 좋습니다 아니기 때문에 당신은 @is_null($var)를 사용할 수 없습니다 .. .])

미 설정 var에 null로 평가합니다
+0

아니요. is_null()은 정의되지 않은 변수에 대해 true를 반환합니다. – chaos

+0

그래, 내가 게시 한 후 그 것으로 나타났습니다. 지금 고쳤습니다. – flussence

-1

:

php > $a = null; 
php > var_dump($a === null); 
bool(true) 
php > var_dump($a === $b); 
bool(true) 

(사용하여 대화 형 콘솔 - PHP는 -a)

0

전역 범위 인 경우 $ GLOBALS 수퍼 글로벌에 키가 있는지 (array_key_exists() 사용) 확인할 수 있습니다.

하지만이

+0

$ GLOBALS이 아닌 $ GLOBALS – chaos

-1

이 변수는 기본적으로 NULL로 초기화되지 않습니다 :) 알 필요가 있다면 당신은 아마 뭔가 잘못하고있어? 그래서, 아직 inited되지 않은 사람과 NULL로 설정 한 사람 사이에는 차이가 없습니다. 이 글로벌의 경우

+0

차이점은 그것이 존재하는 네임 스페이스의 항목입니다. – chaos

+0

예, 그렇지만 스크립트 작성자에게는 어떤 영향이 있습니까? 2 가지 경우를 다르게 처리해야합니까? – twk

+0

값이없는 항목 (NULL은 NO VALUE를 의미하는 값임) - 무언가가 null이고 null로 설정되어 있지 않습니다. 네임 스페이스의 항목은 연결된 값이없는 변수의 초기화 감지시 아무런 의미가 없습니다. – Syntax

1

, 당신은 할 수 있습니다 :

if(array_key_exists('var', $GLOBALS)) 
관련 문제