【问题标题】:Difference between '!=' and '<>' operators in PHP [duplicate]PHP中'!='和'<>'运算符之间的区别[重复]
【发布时间】:2011-12-23 10:53:32
【问题描述】:

可能重复:
What's the difference between “<>” and “!=”?

PHP 中的!=&lt;&gt; 运算符有什么区别?我需要检查一个变量是否不等于NULL。我应该使用哪个运算符?

【问题讨论】:

标签: php operators


【解决方案1】:

这两个运算符没有区别。

要检查NULL,您可能需要改用身份运算符===

$a = 0;

if ($a == NULL) {
   // executes
}

上述条件实际上计算为真。但是,使用身份运算符,您可以检查变量 是否真的 NULL(或者:TRUEFALSE 或其他任何东西,您需要检查其 实际值,不是先前类型转换的结果)。希望这是有道理的。

编辑:要实际回答问题并参考我的咆哮,为了检查变量是否不为空,您可以使用身份运算符的对应项@987654327 @(或 is_null() 其他答案和 cmets 中的建议)。

【讨论】:

  • 和 != 之间的优先顺序略有不同,但除了最复杂的条件外,它不太可能影响任何事情
【解决方案2】:

PHP docs

上面写着:

$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.

该页面上还有一个表格,说明了如何处理 null。此外,有关type comparisons 的讨论,请参阅此页面。

【讨论】:

    【解决方案3】:

    【讨论】:

    • +1,每个人都应该始终使用 RTFM
    【解决方案4】:
    ==' (Equal):
    
     if("22" == 22) echo "YES";
     else           echo "NO";
    

    上面的代码将打印“YES”。原因是操作数的值相等。而当我们运行下面的示例代码时:

    '===' (Identical):
    
     if("22" === 22) echo "YES";
     else            echo "NO";
    

    我们得到的结果是“NO”。原因是虽然两个操作数的值相同,但它们的类型不同,“22”(带引号)是字符串,而 22(不带引号)是整数。但是如果我们把上面的代码改成下面这样:

    if("22" === (string)22) echo "YES";
     else           echo "NO";
    

    没有这样的运算符,它们是用于整数变量的=。

    要检查空值,您应该使用:

    if($a == 'null') or if (isset($a)) 
    

    两者的工作方式相似。

    【讨论】:

      猜你喜欢
      • 2013-05-16
      • 2010-12-30
      • 2022-01-19
      • 1970-01-01
      • 2014-03-28
      • 2021-12-18
      • 2017-12-25
      • 2012-08-29
      相关资源
      最近更新 更多