【问题标题】:"$x == $y" is true in PHP when $x and $y are "not equal"? [closed]当 $x 和 $y “不相等”时,“$x == $y”在 PHP 中为真? [关闭]
【发布时间】:2012-06-18 19:02:53
【问题描述】:

几十年来,我一直是一名开发人员 - 使用多种编程语言。我无法在 PHP 中使用非常简单直接的“if”语句:

if($groupminc == $groupmaxc)

    {
     echo "AFTER1:GROUPMIN==>" . $groupminc . "\n";
     echo "AFTER1:GROUPMAX==>" .  $groupmaxc . "\n";
     $groupmsg = $groupminc . " Participant";
    }
  else
   {
     echo "AFTER2:GROUPMIN==>" . $groupminc . "\n";
     echo "AFTER2:GROUPMAX==>" .  $groupmaxc . "\n";
     $groupmsg = $groupminc . " to " . $groupmaxc . " Participants";
   }

即使 $groupminc 和 $groupmaxc 明显不相等,我也会遇到 AFTER1。

【问题讨论】:

  • 尝试在 if 语句之前调试 $groupminc 和 $groupmaxc
  • $groupminc 和 $groupmaxc 的值是多少?
  • PHP 输入错误...如果您想比较类型和值,请使用 === 运算符,否则事情将被动态转换为“据我所知是有意义的” ...
  • 在尝试任何事情之前,最好先明确$groupminc$groupmaxc 的类型。否则你会得到一个半真半假的答案,你肯定会稍后回来。
  • 作为一名经验丰富的开发人员,应该习惯于查阅精美的手册......例如the section on ==。此外,在 REPL(或“键盘”)上尝试可以帮助减少吸收不同规则/启发式/概念所需的时间。

标签: php if-statement equals-operator


【解决方案1】:

你必须更清楚,你在 $groupminc 和 $groupmaxc 中得到什么值。否则可能会有===== 的问题

【讨论】:

    【解决方案2】:

    向我们展示带有变量初始化的完整代码。

    或者只是尝试以下操作:

    echo ($groupminc !== $groupmaxc ? $groupminc.' to ' : '').$groupmaxc.' Participants';
    

    【讨论】:

      【解决方案3】:

      我认为您在这里发现的问题是 ===== 运算符之间的区别。 this other stackoverflow question有一个很好的答案

      【讨论】:

        【解决方案4】:

        试试===

        if($groupminc === $groupmaxc)
        

        【讨论】:

        • 如果它们明显不相等那么我猜这意味着它们的内容不相等,而不仅仅是它们的类型。这可能根本没有帮助。
        • @Simon: id put money on this 实际上是问题/解决方案显然不等于是一个主观的短语...对于习惯于其他语言的人String(0) 可能是显然不等于Integer(0)
        • @prodigitalson 我开始认为你是对的,我刚刚意识到(在我自己得到一个错误之后)一个非空字符串(不包括一些特殊字符串)与整数 1 相比等于真的。这里很可能就是这种情况。因为毕竟字符串“bug”与整数1“显然不相等”(甚至我自己都这么认为)。
        猜你喜欢
        • 1970-01-01
        • 2014-08-14
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多