PHP에서 &&(AND) 연산자를 사용하면 나열된 모든 조건이 참(true)이어야만 전체 조건식이 참으로 평가됩니다. 반대로 단 하나의 조건이라도 거짓(false)이면 전체 결과는 거짓이 됩니다.
왜 false로 평가되지 않았을까?
질문의 예제 코드가 false로 평가되지 않는 이유는 간단합니다. 실제로 모든 조건이 참을 만족하고 있기 때문입니다. 하나씩 살펴보겠습니다.
- $firstCondition은 "John"이므로
$firstCondition == "John"→ 참 - $secondCondition은 "David"이므로
$secondCondition == "David"→ 참 - 마지막 괄호 안의 조건
($firstCondition == "Mike" || $firstCondition == "John")→ $firstCondition은 "Mike"가 아니지만, OR(||) 연산자는 둘 중 하나만 참이면 되므로 "$firstCondition == \"John\""이 참이기 때문에 전체가 참
결국 세 조건이 모두 참이므로 && 연산의 최종 결과도 true가 되고, if 블록 내부의 문장이 실행됩니다.
예제 코드
<!DOCTYPE html>
<html>
<body>
<?php
$firstCondition = "John";
$secondCondition = "David";
if ($firstCondition == "John" && $secondCondition == "David" && ($firstCondition == "Mike" || $firstCondition == "John")) {
echo "위 조건식은 참입니다";
} else {
echo "위 조건식은 참이 아닙니다";
}
?>
</body>
</html>출력 결과
위 조건식은 참입니다
핵심 정리
&&(AND)는 모든 조건이 참일 때만 참을 반환하고, ||(OR)는 하나라도 참이면 참을 반환합니다. 따라서 AND 조건이 false로 평가되지 않으려면 연결된 모든 개별 조건이 참이어야 하며, 위 예제에서는 그 조건이 충족되었기 때문에 true가 반환된 것입니다.