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

PHP에서 | 연산자와 || 연산자의 차이점 완벽 정리

PHP에는 외형이 비슷하지만 동작 방식이 완전히 다른 두 가지 OR 연산자가 있습니다. 바로 비트 단위로 동작하는 |(비트 OR) 연산자와 논리 판단에 사용되는 ||(논리 OR) 연산자입니다. 두 연산자의 차이를 정확히 이해하면 조건문과 비트 연산에서 발생할 수 있는 오류를 예방할 수 있습니다.

'|' 비트 OR(Bitwise OR) 연산자

| 연산자는 비트 단위 OR 연산자입니다. 두 숫자를 이진수로 변환한 뒤, 대응하는 각 비트를 서로 비교하여 하나라도 1이면 결과 비트를 1로 설정합니다. 주로 플래그(flag) 처리나 권한 비트 계산처럼 개별 비트를 다루어야 할 때 사용됩니다.

'||' 논리 OR(Logical OR) 연산자

|| 연산자는 논리 OR 연산자입니다. 비트 단위가 아니라 피연산자 전체를 하나의 값으로 취급하여 참(true)/거짓(false)을 판단합니다. 두 피연산자 중 하나라도 true로 평가되면 전체 결과는 true(1)가 됩니다. if 문 같은 조건식에서 주로 사용됩니다.

예제 코드

다음 예제는 | 연산자와 || 연산자의 실제 사용법과 결과 차이를 보여줍니다.

<!DOCTYPE html>
<html>
<head>
    <title>PHP Example</title>
</head>
<body>
    <?php
        $x = 1; // 0001
        $y = 2; // 0010

        print('$x | $y = ');
        echo $x | $y;
        print("<br/>");
        print('$x || $y = ');
        echo $x || $y;
    ?>
</body>
</html>

실행 결과

$x | $y = 3
$x || $y = 1

결과 분석

$x = 1은 이진수로 0001, $y = 2는 이진수로 0010입니다.

비트 OR 연산($x | $y)의 경우, 각 자리의 비트를 비교하여 0001 OR 0010 = 0011, 즉 십진수 3이 됩니다.

반면 논리 OR 연산($x || $y)은 숫자 1과 2를 모두 0이 아닌 값, 즉 true로 간주합니다. 따라서 true OR true의 결과인 true가 반환되며, PHP에서 true는 1로 출력됩니다.

정리

  • |: 피연산자의 개별 비트를 하나씩 비교하여 새로운 숫자 값을 생성합니다.
  • ||: 피연산자 전체를 참/거짓으로만 평가하며, 결과는 항상 불리언 값(true/false)입니다.
  • 조건 판단이 목적이라면 ||를, 비트 조작이 목적이라면 |를 사용해야 합니다.