비교 연산자는 이름에서 알 수 있듯이 두 값을 비교할 수 있습니다.
비교 연산자
예 🎜>$a == 유형 변환 후 $a가 $b와 같으면 $b는 TRUE와 같습니다. $a === $b 합동 $a가 $b와 같고 해당 유형이 동일한 경우 TRUE입니다. $a != $b 같지 않음 유형 변환 후 $a가 $b와 같지 않으면 TRUE입니다.
$a a8093152e673feb7aba1828c43532094 $b는 유형 변환 후 $a가 $b와 같지 않으면 TRUE와 같지 않습니다.
$a !== $b 합동이 아님 $a가 $b와 같지 않거나 유형이 다른 경우 TRUE입니다.
$a c36573b76a6911a5f1ad58fd4cb1cd32 $a가 $b보다 큰 경우 $b는 TRUE보다 큽니다.
$a b4d78ffd5d9ff35550a57aae4be707b8= $a가 $b보다 크거나 같은 경우 $b는 TRUE보다 크거나 같습니다.
숫자와 문자열을 비교하거나 숫자 내용이 포함된 문자열을 비교할 경우 문자열이 숫자 값으로 변환되어 비교가 숫자 값으로 수행됩니다. 이 규칙은 스위치 문에도 적용됩니다. === 또는 !==로 비교할 경우 유형과 값을 모두 비교하므로 유형 변환이 수행되지 않습니다.
여러 유형의 경우 비교 연산자는 다음 표(순서대로)에 따라 비교합니다. 여러 유형 비교 피연산자 1 유형<?php var_dump(0 == "a"); // 0 == 0 -> true var_dump("1" == "01"); // 1 == 1 -> true var_dump("10" == "1e1"); // 10 == 10 -> true var_dump(100 == "1e2"); // 100 == 100 -> true switch ("a") { case 0: echo "0"; break; case "a": // never reached because "a" is already matched with 0 echo "a"; break; } ?>
피연산자 2 유형
결과
null 또는 문자열 문자열 숫자 또는 어휘 비교를 위해 NULL을 ""로 변환
bool 또는 null 기타 유형 bool로 변환, FALSE < TRUE
객체 객체 내장 클래스에서 정의할 수 있음 자체 비교, 다른 클래스는 비교할 수 없음, 동일한 클래스 및 배열의 속성은 동일한 방식으로 비교됩니다(PHP 4). PHP 5에는 자체 지침이 있습니다.
문자열, 리소스 또는 숫자 문자열, 리소스 또는 숫자는 문자열과 리소스는 숫자로 변환되어 일반 수학에 따라 비교됩니다.
배열 멤버 수가 적은 배열 배열은 피연산자 1의 키가 피연산자 2에 없으면 배열을 비교할 수 없습니다. 값 비교(아래 예 참조)
객체 다른 유형의 객체는 항상 더 큽니다.
array 다른 유형의 배열은 항상 더 큽니다.
예 # 1 표준 배열 비교 코드
경고: 부동 소수점 숫자 float 의 내부 표현으로 인해 두 부동 소수점 숫자가 같은지 비교하면 안 됩니다.삼항 연산자
<?php // 数组是用标准比较运算符这样比较的 function standard_array_compare($op1, $op2) { if (count($op1) < count($op2)) { return -1; // $op1 < $op2 } elseif (count($op1) > count($op2)) { return 1; // $op1 > $op2 } foreach ($op1 as $key => $val) { if (!array_key_exists($key, $op2)) { return null; // uncomparable } elseif ($val < $op2[$key]) { return -1; } elseif ($val > $op2[$key]) { return 1; } } return 0; // $op1 == $op2 } ?>또 다른 조건 연산자는 "?:"(또는 삼항) 연산자입니다. 예제 #2 기본값 지정
<?php // Example usage for: Ternary Operator $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; // The above is identical to this if/else statement if (empty($_POST['action'])) { $action = 'default'; } else { $action = $_POST['action']; } ?>
삼항 연산자를 함께 쌓지 않는 것이 좋습니다. 하나의 명령문에 여러 개의 삼항 연산자가 사용되면 PHP 연산의 결과가 명확하지 않습니다.
예 #3 명확하지 않은 삼항 연산자 동작