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

PHP에서 '&&'와 'AND' 연산자의 차이점: 우선순위까지 완벽 비교

PHP는 산술, 할당, 비교 등 다양한 작업을 수행할 수 있는 강력한 연산자들을 제공합니다. 이 글에서는 논리 연산자인 &&and에 초점을 맞춰, 두 연산자가 우선순위에 따라 어떻게 다르게 동작하는지 자세히 살펴보겠습니다. &&and는 true 또는 false를 결과로 반환하기 때문에 불리언(Boolean) 연산자라고도 불립니다.

'AND' 연산자란?

and 연산자는 두 조건이 모두 참(true)일 때만 true를 반환합니다. 예제를 통해 확인해 보겠습니다.

예제

<?php
    $val1 = 20;
    $val2 = 50;
    if ($val1 == 20 and $val2 == 50)
        echo "True";
    else
        echo "False";
?>

출력 결과:

True

설명:

$val1 = 20, $val2 = 50이므로 조건식 $val1 == 20은 true로 평가되고, $val2 == 50 역시 true로 평가됩니다. 따라서 두 피연산자가 모두 참이므로 최종 결과도 참(True)이 됩니다.

예제 2:

<?php
    $a = 30;
    $b = 50;
    if ($a == 30 and $b == 10)
        echo "True";
    else
        echo "False";
?>

출력 결과:

False

설명:

$a = 30, $b = 50으로 선언했기 때문에 조건식 $a == 30은 true로 평가되지만, 조건식 $b == 10은 false를 반환합니다. AND 연산은 하나라도 거짓이면 전체 결과가 거짓이 되므로 최종 결과는 False입니다.

'&&' 연산자의 동작 방식

&& 연산자도 and 연산자와 동일하게 동작하며, 표현식에서 두 조건(피연산자)이 모두 참일 때만 true를 반환합니다. 아래 예제를 통해 확인해 보겠습니다.

예제:

<?php
    $val1 = 25;
    $val2 = 5;
    if ($val1 == 25 && pow($val2, 2) == $val1)
        echo "True";
    else
        echo "False";
?>

출력 결과:

True

설명:

$val1 = 25, $val2 = 5이므로 조건식 $val1 == 25는 true로 평가되고, pow($val2, 2) == $val1 역시 true로 평가됩니다. $val2 = 5를 제곱하면 25가 되어 $val1과 같기 때문입니다. 따라서 '$val1 == 25 && pow($val2, 2) == $val1'은 true로 평가됩니다. AND 논리에서는 두 피연산자가 모두 참일 때만 결과가 참이 됩니다.

참고:

만약 $val2 = 20으로 선언한다면, pow($val2, 2) == $val1 조건은 400 ≠ 25이므로 false가 되고, AND 연산의 최종 결과 역시 false가 됩니다.

우선순위 관점에서 본 'AND'와 '&&'의 차이

표현식에서 연산은 각 연산자의 우선순위에 따라 수행됩니다. 핵심적인 차이는 바로 여기에 있습니다. && 연산자의 우선순위는 높은 반면, and 연산자의 우선순위는 낮습니다. 아래 예제를 통해 그 차이를 살펴보겠습니다.

<?php
    $a = 10;
    $b = NULL;
    $val = $a && $b;
    echo ($val ? 'TRUE' : 'FALSE'), "\n";
    $val = $a and $b;
    echo ($val ? 'TRUE' : 'FALSE');
?>

출력 결과:

FALSE
TRUE

설명:

동일한 피연산자를 사용했음에도 두 연산자의 결과가 서로 다릅니다. 첫 번째 표현식은 FALSE를 출력하고, 두 번째 표현식은 TRUE를 출력합니다.

첫 번째 표현식인 $val = $a && $b;가 FALSE가 되는 이유는, && 연산자의 우선순위가 할당 연산자 =보다 높기 때문에 먼저 && 연산이 수행된 후, 그 결과(false)가 변수 $val에 할당되기 때문입니다.

두 번째 표현식인 $val = $a and $b;가 TRUE가 되는 이유는, and 연산자의 우선순위가 할당 연산자 =보다 낮기 때문입니다. 따라서 등호 오른쪽에 있는 $a의 값(10)이 먼저 $val에 할당됩니다. 이후 내부적으로 'and' 연산이 수행되지만 그 결과는 할당되지 않으므로, $val에는 10이 담겨 있어 결국 TRUE로 평가됩니다.

정리

결론적으로 and 연산자와 && 연산자는 기본적으로 동일한 논리 연산을 수행하지만, 가장 큰 차이점은 우선순위입니다. 조건문(if) 안에서 단독으로 사용할 때는 두 연산자의 결과가 같지만, 할당 연산(=)과 함께 사용할 때는 의도치 않은 버그를 초래할 수 있으므로 반드시 주의해서 사용해야 합니다.