복붙노트

3 개의 다른 동등 물

PHP

3 개의 다른 동등 물

=, == 및 ===의 차이점은 무엇입니까?

하나의 등호를 사용하는 것은 변수를 선언하는 것이고 두 개의 등호는 비교 조건을위한 것이고 마지막으로 3 개의 등호는 선언 된 변수의 값을 비교하는 것입니다.

해결법

  1. ==============================

    1.

    대입 연산자, == '동등'비교 연산자 및 === '동일'비교 연산자가 있습니다.

    $a = $b     Assign      Sets $a to be equal to $b.
    $a == $b    Equal       TRUE if $a is equal to $b.
    $a === $b   Identical   TRUE if $a is equal to $b, and they are of the same type. (introduced in PHP 4)
    

    == 및 ===에 대한 필요성 및 각각을 사용하는 상황에 대한 자세한 정보는 문서를보십시오.

  2. ==============================

    2.

  3. ==============================

    3.

    = 대입 연산자

    == 두 변수가 같은 값을 가지고 있는지 검사한다.

    === 2 개의 변수가 같은 값을 가지고 있는지 그리고 그것들의 타입이 같은지 검사한다.

  4. ==============================

    4.

    고급 PHP 사용자의 경우 ==와 ===의 차이를 알고 스스로를 묻는 것은 "== 또는 == 두 피연산자가 같은 유형인지 확신 할 때 더 빠릅니까?"

    짧고 일반적인 대답은 다음과 같습니다. ===이 경우 ===를 사용하면 성능이 향상되지 않으므로 ==를 사용해야합니다.

    직접 벤치마킹하는 데 관심이있는 사용자는 Ad-hoc로 작성한 다음 코드를 사용하여 $ a 및 $ b에 대해 다른 값을 시도 할 수 있습니다.

    <?php
        // CONFIGURATION
        $cycles = 1000000;
        $a = 'random string 1';
        $b = 'random string 2';
    
        // FUNCTIONS
        function compare_two_equals($a, $b) {
            if ($a == $b) {
                return TRUE;
            } else {
                return FALSE;
            }
        }
    
        function compare_three_equals($a, $b) {
            if ($a === $b) {
                return TRUE;
            } else {
                return FALSE;
            }
        }
    
        // EXECUTION
        $time = microtime(TRUE);
        for ($count_a = 0; $count_a < $cycles; $count_a++) {
            compare_two_equals($a, $b);
        }
        $time_two_a = microtime(TRUE) - $time;
        $time = microtime(TRUE);
        for ($count_a = 0; $count_a < $cycles; $count_a++) {
            compare_three_equals($a, $b);
        }
        $time_three_a = microtime(TRUE) - $time;
        $time = microtime(TRUE);
        for ($count_a = 0; $count_a < $cycles; $count_a++) {
            compare_two_equals($a, $b);
        }
        $time_two_b = microtime(TRUE) - $time;
        $time = microtime(TRUE);
        for ($count_a = 0; $count_a < $cycles; $count_a++) {
            compare_three_equals($a, $b);
        }
        $time_three_b = microtime(TRUE) - $time;
        $time = microtime(TRUE);
    
        // RESULTS PRINTING
        print "<br />\nCOMPARE == (FIRST TRY): " . number_format($time_two_a, 3) . " seconds";
        print "<br />\nCOMPARE == (SECOND TRY): " . number_format($time_two_b, 3) . " seconds";
        print "<br />\nCOMPARE === (FIRST TRY): " . number_format($time_three_a, 3) . " seconds";
        print "<br />\nCOMPARE === (SECOND TRY): " . number_format($time_three_b, 3) . " seconds";
    ?>
    

    참고 : 비교는 각 "첫 번째 트라이"가 "두 번째 트라이"에 매우 근접한 경우에만 유효합니다. 이들이 상당히 다르다면, 프로세서가 비교를 실행하는 동안 다른 작업을 수행 중일 때 결과가 신뢰할 수없고 벤치 마크를 다시 실행해야한다는 의미입니다.

  5. from https://stackoverflow.com/questions/2063480/the-3-different-equals by cc-by-sa and MIT lisence