2010-04-07 3 views
-1

isset() 또는 empty() 외에 빈 변수를 테스트하는 더 좋은 방법이 있습니까?빈 PHP 변수

+12

isset() 및 empty()의 문제점은 무엇입니까? – dscher

+0

+1 이전 내용 –

+0

나는 Coding Horror 나 다른 블로그에서 다른 방법에 대해 읽은 것을 기억했지만 기억하지 못했습니다. 나는 isset() 또는 empty()에 문제가 있다는 것을 말하는 것이 아니라 뇌를 조금 찌르려고합니다. –

답변

4

상황에 따라 다릅니다.

isset()은 변수 값이 NULL이 아니므로 true가 반환됩니다 (따라서 변수가 정의되어 있어야합니다).

empty() 변수의 값이 "빈"값을 것으로 간주 될 때 true를 돌려줍니다 일반적으로이 0, "0", NULL, FALSE, array() (빈 배열)과 "" (빈 문자열), 아무 의미 else는 비어 있지 않습니다.

몇 가지 예

FALSE == isset($foo); 
TRUE == empty($foo); 
$foo = NULL; 
FALSE == isset($foo); 
TRUE == empty($foo); 
$foo = 0; 
TRUE == isset($foo); 
TRUE == empty($foo); 
$foo = 1; 
TRUE == isset($foo); 
FALSE == empty($foo); 
+0

제게는 충분합니다, 고마워요. –

+1

'array()', 즉 빈 배열 또한'empty'입니다! – deceze

2

이상한 == 중 일부는 당신이 생각 PHP로 얻을 결과에 대한 눈을 밖으로 유지; ===를 사용하여 예기치 않은 결과를 얻을 수 있습니다. 0이 거짓이고, 빈 문자열 거짓

if (0 == '') { 
    echo "weird, huh?\n"; 
} 

if (0 === '') { 
    echo "weird, huh?\n"; 
} else { 
    echo "that makes more sense\n"; 
} 

때문에 == 0 '은'참 == FALSE FALSE, 동일하다. ===를 사용하면 PHP도 유형을 검사합니다.

+0

조건부 코드 검사를 적용하기 전에 변수에 var_dump()를 사용하고이 격자 검사를 염두에 두십시오. http://www.deformedweb.co.uk/php_variable_tests.php – Cups