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

PHP에서 AND와 && 연산자의 차이점 완벽 이해하기

PHP 논리 연산자, 왜 두 종류일까?

PHP에서는 논리곱(AND)을 나타내는 연산자가 'AND''&&' 두 가지입니다. 기능 자체는 동일하게 두 피연산자가 모두 참(true)일 때 참을 반환하지만, 결정적인 차이는 바로 연산자 우선순위(precedence)에 있습니다.

'AND' 논리 연산자

'AND' 연산자는 논리곱 연산자이지만, 우선순위가 대입 연산자(=)보다 낮습니다. 따라서 표현식을 작성할 때 의도치 않은 결과가 발생할 수 있습니다.

'&&' 논리 연산자

'&&' 연산자 역시 논리곱 연산자이지만, 우선순위가 대입 연산자(=)보다 높습니다. 일반적으로 개발자가 기대하는 방식으로 조건식이 먼저 평가된 후 결과가 변수에 대입됩니다.

예제 코드

아래 예제를 통해 'AND''&&' 연산자의 차이를 직접 확인할 수 있습니다.

<!DOCTYPE html>
<html>
<head>
    <title>PHP Example</title>
</head>
<body>
    <?php
        $x = true;
        $y = false;

        // AND 연산자 사용
        $result = $x AND $y;
        print('$result = $x AND $y');
        print("<br/>");
        var_dump($result);
        print("<br/>");

        // && 연산자 사용
        $result = $x && $y;
        print('$result = $x && $y');
        print("<br/>");
        var_dump($result);
    ?>
</body>
</html>

실행 결과

$result = $x AND $y
bool(true)
$result = $x && $y
bool(false)

결과 분석

출력 결과가 다른 이유는 연산자 우선순위 때문입니다.

  • $result = $x AND $y($result = $x) AND $y로 해석됩니다. 즉, $result$x(true)가 먼저 대입되고, 그 후 AND 연산이 수행됩니다. 따라서 $result의 값은 true가 됩니다.
  • $result = $x && $y$result = ($x && $y)로 해석됩니다. 조건식이 먼저 평가되어 false가 되고, 이 결과가 $result에 대입됩니다. 따라서 $result의 값은 false가 됩니다.

정리 및 권장 사항

두 연산자의 차이를 요약하면 다음과 같습니다.

연산자종류= 연산자 대비 우선순위
&&논리곱높음 (조건식이 먼저 평가됨)
AND논리곱낮음 (대입이 먼저 수행됨)

실무에서는 혼란을 방지하기 위해 조건문과 대입식에서는 '&&' 사용을 권장합니다. 'AND', 'OR' 같은 영문 연산자는 우선순위가 낮다는 특성을 활용한 특수한 경우에만 신중하게 사용하는 것이 좋습니다.