2014-04-17 6 views
1

마지막 if 문이 true 일 것으로 기대하지만, $ var는 type, max 또는 min입니다.If 문이 예상대로 작동하지 않습니다.

정확히 무슨 일이 일어 났는지 설명 할 수 있습니까? 왜냐하면 나는 이해하지 못하기 때문이다.

$var = 'required'; 

if($var == 'unique') { 
    echo '$var is unique.'; 
} else if($var == ('type' || 'max' || 'min')) { 
    echo '$var is type, max or min.'; 
} else if($var == 'required') { 
    echo '$var is required.'; 
} 

답변

11

||을 이와 같이 사용할 수 없습니다. 적절한 방법은 다음과 같습니다 확인하는 인수가 존재하는 경우

if ($var == 'type' || $var == 'max' || $var == 'min') 

대신 in_array 사용을 고려, 그것은 검사가보다 간결하게됩니다 :

if (in_array($var, ['type', 'max', 'min', 'some', 'other', 'string', 'to', 'check'])) 
1
($var == ('type' || 'max' || 'min')) 

당신은 쓸 수 없습니다 이렇게. 당신은 ('type' || 'max' || 'min') 당신이 ($var == true)을 평가하기 위해 PHP를 요구하고 의미 true을 논리 값으로 계산되는 식입니다 그것 때문에

($var == 'type' || $var == 'max' || $var == 'min')) 
2

그 쓰기 말아야. 빈 또는 널이 아니기 때문에 표현식은 참입니다. 로 변경 :

if ($var == 'type' || $var == 'max' || $var == 'min') 
1

이 밖으로 시도 :

$var = 'required'; 

if($var == 'unique') { 
    echo '$var is unique.'; 
} else if($var == 'type' || $var == 'max' || $var == 'min')) { 
    echo '$var is type, max or min.'; 
} else if($var == 'required') { 
    echo '$var is required.'; 
} 
2

은 여기에서 일어나고있는 것은 그 PHP를 처음 ('type' || 'max' || 'min')을 평가이다. 이 평가는 사실입니다. 그 후 'required'true의 비교가 true로 평가됩니다. 이것은 문자열과 부울을 비교할 때 문자열이 0이 아닌 경우 문자열이 true로 캐스팅되기 때문에 발생합니다. 비교 결과 테이블을 참조하면 도움이 될 수 있습니다. http://us3.php.net/manual/en/types.comparisons.php.

당신이 원하는 :

$var = 'required'; 

if($var == 'unique') { 
    echo '$var is unique.'; 
} else if($var == 'type' || $var == 'max' || $var == 'min') { 
    echo '$var is type, max or min.'; 
} else if($var == 'required') { 
    echo '$var is required.'; 
} 

나는 심지어 경우 $ var에의 절대 문자열 비교 적 부울 또는 다른 형태로 전달하지 있는지 확인 === 일을 제안한다.

$var = 'required'; 

if($var === 'unique') { 
    echo '$var is unique.'; 
} else if($var === 'type' || $var === 'max' || $var === 'min') { 
    echo '$var is type, max or min.'; 
} else if($var === 'required') { 
    echo '$var is required.'; 
} 
0

올바른 방법은 다음과 같습니다

if($var=='type'||$var=='max'||$var=='min') 
관련 문제