Php 这三个不同的相等

Php 这三个不同的相等,php,comparison,operators,Php,Comparison,Operators,=、=和==之间有什么区别 我认为使用一个等号声明变量,两个等号表示比较条件,最后三个等号表示比较声明变量的值。您有=赋值运算符,=的'equal'比较运算符和==的'equality'比较运算符 $a=$b分配将$a设置为等于$b。 如果$a等于$b,则$a==$b等于TRUE。 $a===$b如果$a等于$b,并且它们的类型相同,则为同一TRUE。(在PHP4中介绍) 有关需要=和==的更多信息,以及每种情况的使用情况,请参阅。=assignment operator ==检查两个变量是否

=
=
==
之间有什么区别


我认为使用一个等号声明变量,两个等号表示比较条件,最后三个等号表示比较声明变量的值。

您有
=
赋值运算符
=
'equal'比较运算符
==
'equality'比较运算符

$a=$b分配将$a设置为等于$b。
如果$a等于$b,则$a==$b等于TRUE。
$a===$b如果$a等于$b,并且它们的类型相同,则为同一TRUE。(在PHP4中介绍)

有关需要
=
==
的更多信息,以及每种情况的使用情况,请参阅。

=assignment operator

==检查两个变量是否具有相同的值

==检查两个变量是否具有相同的值以及它们的类型是否相同
  • =
    是赋值运算符
  • ==
    是比较运算符(检查是否 两个变量的值相等)
  • =
    是相同的比较 运算符(检查是否有两个变量 具有相等的值并且具有相同的属性 类型)

  • 对于高级PHP用户,了解
    ==
    ==
    之间的区别,并询问自己“当我确定两个操作数的类型相同时,与
    ==
    ==
    相比,速度更快吗?”

    简短而笼统的回答是:在这种情况下使用
    ==
    不会提高性能,因此您可能应该使用
    =

    对于那些对自己进行基准测试感兴趣的人,您可以使用我特别编写的以下代码,并为
    $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";
    ?>
    
    
    

    注:仅当每次“首次尝试”都非常接近其“第二次尝试”时,比较才有效。如果它们显著不同,则表示处理器在执行比较时忙于执行其他操作,因此结果不可靠,应再次运行基准。

    运算符将值分配给变量 $6=6;值6被分配给变量$6

    ==运算符检查两个变量的值是否相等,并且主要用于if语句等条件

    $a = 2;
    $b = 2;
    if ($a == $b) { 
        echo both variables have the same value; 
    }
    
    ===运算符类似于==(检查值是否等于),并检查两者是否具有相同的数据类型

    $a = 2;
    $b = "2";
    if ($a === $b) {
        echo "both variable have same value and of same data type";
    } else {
        echo 'both variable is either not equal or not of same data type';
    }
    

    //这里$a是int类型,而$b是string类型。因此,这里的输出

    请查看示例。。。对于高级PHP用户,了解==和===之间的区别,并询问他们自己“当我确定两个操作数的类型相同时,与==或与===比较快吗?”,请看下面我的基准脚本。@我觉得问题的标记也应该包括该标记,因为它也适用于该语言。(更新):我在编辑中添加了javascript标记,因为在javascript中使用
    =
    的问题很多。这不仅适用于PHP,也适用于其他语言。我继续并删除了JavaScript标记:这里的所有答案都是关于PHP的(除了最新的非常弱),不同语言处理它的方式存在差异,并且已经有一个类似的事实上的规范JavaScript问题()。也知道!=还有两个比较运算符的“非”版本。有些语言使用:=作为赋值,只是为了避免这种混淆。像这样的微基准不太可靠。您也不太可能担心性能问题的原因是
    ==
    ===
    。IMO:最好是严格(
    ===
    ),除非你明确地想要在比较方面放松(
    ==
    )。奇怪边缘情况的数量,即
    “5不是一个数字”==5
    ,可能会导致奇怪的错误<代码>==从来没有遇到过这个问题。我的测试是告诉程序员,如果他们出于性能原因选择了
    ==
    ,那么他们就错了。因此,程序员可以根据逻辑原因而不是性能原因自由选择
    ===
    ==
    :有不同的情况可以选择其中一种或另一种,性能根本不能考虑。当我比较两个相同的日期时间时,我得到了错误的结果,为什么?示例:@stloc,
    =
    with objects告诉您它们是否是相同的对象,而不是它们是否具有相同的内容