<>和!=之间有什么区别?

这个问题在这里已经有了答案:

  • PHP 6中的“不等于”运算符<>和!=的区别

  • 暂时忘记文档,让我们来看看源代码。 让我们从扫描仪(词法分析器)开始:

    <ST_IN_SCRIPTING>"!="|"<>" {
        return T_IS_NOT_EQUAL;
    }
    

    所以他们解析同样的道理。 让我们看看解析器:

    expr T_IS_NOT_EQUAL expr { zend_do_binary_op(ZEND_IS_NOT_EQUAL, &$$, &$1, &$3 TSRMLS_CC); }
    

    所以我们知道被触发的操作码是ZEND_IS_NOT_EQUAL ...

    现在,我们来看看这个操作:

    static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
    {
        USE_OPLINE
    
        zval *result = &EX_T(opline->result.var).tmp_var;
    
        SAVE_OPLINE();
        ZVAL_BOOL(result, fast_not_equal_function(result,
            opline->op1.zv,
            opline->op2.zv TSRMLS_CC));
    
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
    }
    

    所以几乎没有区别。 由于他们解析为同一标记,他们具有完全相同的优先级(因此文档是错误的或误导性的)。 由于它们使用相同的执行程序,并且在操作码例程中没有决定点,它们将执行相同的代码。

    所以是的, <>!=是100%可互换的,绝对没有任何技术上的理由可以互相使用。

    如此说来,通过保持一致有一些重要的事情可以获得。 所以我建议你只要坚持!=并完成它...

    编辑

    我更新了文档以反映这一点,并用优先顺序修复了另一个问题(++和 - 具有与投射相同的优先顺序)。 在docs.php.net上查看它


    没有不同。

    但是, !=允许更方便地添加一个extra =来强制类型比较。


    旧的,新的。

    根据手册:

    $a != $b    Not equal   TRUE if $a is not equal to $b after type juggling.
    $a <> $b    Not equal   TRUE if $a is not equal to $b after type juggling.
    

    使用!=

    次要区别:还有一个优先顺序。 看这里。

    <>在优先表中出现在!=之前,但他们完成了完全相同的事情。

    链接地址: http://www.djcxy.com/p/1805.html

    上一篇: What is the difference between <> and !=

    下一篇: comparing, !== versus !=