and != in PHP (7 个回答) 关闭8年前。 在 PHP 中检查不相等-6ren">
gpt4 book ai didi

php - <> 和 != 有什么区别

转载 作者:IT王子 更新时间:2023-10-29 00:50:00 24 4
gpt4 key购买 nike

在 PHP 中检查不相等(不检查类型)你可以这样做:

if( A != B ) {
DO SOMETHING;
}

但是你也可以这样做,结果是一样的:

if( A <> B ) {
DO SOMETHING;
}

有什么不同吗?

是否使用 !=超过 <>以任何方式、形状或形式更改评估?

最佳答案

暂时忘记文档,让我们查看源代码。让我们从 the scanner (lexer) 开始吧:

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

因此它们解析为相同的标记。来看看the parser :

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

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

现在,让我们看看 the operation :

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% 可互换的,绝对没有技术上的理由来使用另一个。

话虽如此,通过保持一致可以获得一些重要的好处。所以我建议坚持使用 !=并完成它......

编辑

我更新了文档以反射(reflect)这一点,并修复了优先顺序的另一个问题(++ 和 -- 与强制转换具有相同的优先级)。查看 docs.php.net

关于php - <> 和 != 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9671785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com