2014-11-30 2 views
0

PHP에서 빈 문자열을 감지하기 위해 if 조건을 작성해야합니다. 그러나 변수도 숫자를 얻을 수 있습니다. 그래서 나는 다음과 같은 조건을 씁니다. 변수 값 제로를 얻을 수 있지만 "0"숫자로 상태는 PHP에 버그 ""0과 PHP 문자열 비교

$string = array_search("value match", $array); //$string = 0; 

if($string == "") 
{ 
    echo "not equal"; 
} 

인가가 빈 감지? 숫자 나 문자열을 가질 수있는 변수에 대해 공백 값 (null이 아님)을 어떻게 감지 할 수 있습니까?

+5

'$ 비록 string'은 문자열이 아니라 정수입니다. 그리고 그것은 ['0 == ""'의도 된 행동입니다] (http://php.net/manual/en/types.comparisons.php#types.comparisions-loose). – Gumbo

+0

시도 할 수 : if ($ string! = ""&& $ string! = 0) {} // GOOD –

+0

다음은 변수'$ string = array_search ("value match" $ 배열);'. 검색 일치 항목이 없으면 조건에 따라 검색해야합니다. – sugunan

답변

2

당신이 거짓을 확인해야합니다 array_search를 사용하여 :

if($string !== false) //Note !== rather than != (stops 0 equating to false) 

그렇지 않으면 0 'falsy'으로 간주됩니다 유효한 반환 값이 (첫 번째 요소/키)

+0

이것은 if thing ($ string === false)'과 같이 문제의 코드와 일치시키기 위해 필요한 작은 수정입니다. 작업 솔루션과 적절한 설명에 감사드립니다. – sugunan

4

이 시도 :

모두 0""empty()로 평가하기 때문이다
if ($string === "") { //With three equality signs 
} 

. 그것은 버그는 아니지만 느슨한 타이핑의 부작용입니다.

+0

이것은 ""을 (를) 감지하지 못합니다. – sugunan

+0

어떻게됩니까? 이것은'' "''('" "=" "''true'를 리턴 할 것입니다.)과 직접 비교합니다. 어떻게 실패 할 수 있습니까? 그러나 '0'은 감지하지 못합니다. 이를 위해'$ string === 0'을 사용해야합니다.'$ string' *이 숫자이고 * 정확히 0인지 검사 할 것입니다. –

+0

다음은'$ string = array_search ("값 일치", $ 배열);'. 검색 일치가 없으면 if 조건으로 검색해야합니다. – sugunan