Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 'AND'와 '&&' 연산자의 차이점 완벽 정리

PHP에는 논리곱(AND)을 수행하는 두 가지 연산자, 즉 and&&가 존재합니다. 두 연산자 모두 같은 기능을 하지만, 결정적인 차이는 연산자 우선순위(operator precedence)에 있습니다.

&& 연산자의 우선순위가 대입 연산자 =보다 높은 반면, and 연산자의 우선순위는 =보다 낮습니다. 이러한 우선순위 차이 때문에 동일해 보이는 코드도 결과가 달라질 수 있습니다.

예제 1: 'and' 연산자 사용

먼저 and 연산자를 사용한 기본적인 예제를 살펴보겠습니다.

<?php
   $val1 = 55;
   $val2 = 65;
   if ($val1 == 55 and $val2 == 65)
      echo "Result = True";
   else
      echo "Result = False";
?>

출력 결과

Result = True

조건 비교문 안에서는 and&& 모두 의도한 대로 작동합니다.

예제 2: '&&' 연산자 사용

이번에는 && 연산자를 사용한 예제입니다.

<?php
   $val1 = 110;
   $val2 = 110;
   if ($val1 == 110 && $val2 == 110)
      echo "Result = True";
   else
      echo "Result = False";
?>

출력 결과

Result = True

단순 조건문에서는 두 연산자의 결과가 동일하게 나타납니다. 그렇다면 실질적인 차이는 어디서 발생할까요?

예제 3: 우선순위 차이가 드러나는 핵심 예제

대입 연산자와 함께 사용할 때 두 연산자의 차이가 명확히 드러납니다.

<?php
   $bool = TRUE and FALSE;
   echo ($bool ? 'true' : 'false'), "\n";
   $bool = TRUE && FALSE;
   echo ($bool ? 'true' : 'false');
?>

출력 결과

true
false

결과가 서로 다르게 나온 이유를 살펴보겠습니다.

  • $bool = TRUE and FALSE;and의 우선순위가 =보다 낮기 때문에 먼저 $bool = TRUE가 실행되고, 그 후에 $bool and FALSE가 평가됩니다. 따라서 $bool에는 TRUE가 할당되어 true가 출력됩니다.
  • $bool = TRUE && FALSE;&&의 우선순위가 =보다 높기 때문에 TRUE && FALSE가 먼저 평가되어 FALSE가 되고, 이 결과가 $bool에 할당됩니다. 따라서 false가 출력됩니다.

결론 및 권장 사항

정리하면 다음과 같습니다.

  • 두 연산자는 논리적으로 동일한 역할을 수행하지만, 우선순위가 다릅니다.
  • &&: 대입 연산자 =보다 우선순위가 높음
  • and: 대입 연산자 =보다 우선순위가 낮음

일반적으로 코드의 가독성과 예측 가능성을 위해 대부분의 PHP 개발자는 &&|| 사용을 권장합니다. and, or는 특수한 경우(예: 오류 처리 시 or die())를 제외하고는 의도치 않은 버그를 유발할 수 있으므로 주의해서 사용해야 합니다.