>  기사  >  백엔드 개발  >  PHP 비교 연산자

PHP 비교 연산자

伊谢尔伦
伊谢尔伦원래의
2016-11-24 13:30:501221검색

비교 연산자는 이름에서 알 수 있듯이 두 값을 비교할 수 있습니다.

비교 연산자

예                                                                               🎜>$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 기본값 지정


식 (expr1) ? (expr2) : (expr3) expr1이 TRUE로 평가되면 값은 expr2이고 expr1이 평가하면 expr2입니다. FALSE가 expr3일 때의 값입니다.

PHP 5.3부터 삼항 연산자의 중간 부분을 생략할 수 있습니다. expr1 ?: expr3 표현식은 expr1이 TRUE로 평가되면 expr1을 반환하고 그렇지 않으면 expr3을 반환합니다.

참고: 삼항 연산자는 명령문이므로 평가는 변수가 아니라 명령문의 결과입니다. 이는 참조로 변수를 반환하려는 경우 중요합니다. 참조로 반환하는 함수의 return $var == 42 ? $a : $b; 문은 작동하지 않으며 향후 버전의 PHP에서는 이에 대한 경고가 표시됩니다.

참고:
<?php
 // Example usage for: Ternary Operator
 $action = (empty($_POST[&#39;action&#39;])) ? &#39;default&#39; : $_POST[&#39;action&#39;];
 // The above is identical to this if/else statement
 if (empty($_POST[&#39;action&#39;])) {
     $action = &#39;default&#39;;
 } else {
     $action = $_POST[&#39;action&#39;];
 }
 ?>

삼항 연산자를 함께 쌓지 않는 것이 좋습니다. 하나의 명령문에 여러 개의 삼항 연산자가 사용되면 PHP 연산의 결과가 명확하지 않습니다.

예 #3 명확하지 않은 삼항 연산자 동작

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.