【问题标题】:If statement returning both true and false in PHP如果语句在 PHP 中返回真假
【发布时间】:2011-01-13 16:57:36
【问题描述】:

以下语句在运行时返回“do actions!what2”。这里发生了什么?好像 true 和 false 都被返回了!

if (md5($email) == $emailHash) {
    echo "do actions!";
} else {
    echo "what2";
}

【问题讨论】:

  • 贴更多代码,听起来好像执行了不止一次
  • 是的,有些事情肯定不对,有些事情不能同时是 truefalse 其他事情没有显示
  • 也许这就是宇宙崩塌的时刻!
  • 哦,不,2012 年比预期来得早!
  • 我拒绝相信 2012 年已经到来,发布更多代码 :)

标签: php if-statement


【解决方案1】:

同时显示真假条件的双重函数调用?您可以使用 debug_print_backtrace 函数生成堆栈跟踪,并查看它是否被多次调用。

【讨论】:

    【解决方案2】:

    没有机会 - 你调用了两次代码!

    【讨论】:

      【解决方案3】:

      这是发生此问题的实际代码吗?因为现在这样,不可能发生。如果它不是您的实际代码,请检查您的条件之后但在第一个块之前是否有分号。

      【讨论】:

        【解决方案4】:

        如果代码在 forwhile 循环中(或者在函数中被调用两次),则可能是 if 第一次评估为 true,第二次评估为 false时间。否则,我看不出有什么原因会发生这种情况。

        【讨论】:

          【解决方案5】:

          我猜周围的代码做错了。这个没什么毛病。还可以尝试在 if 条件中添加三个等号 === 而不是两个。

          【讨论】:

            【解决方案6】:

            我不知道那里到底发生了什么,但我习惯于为同样的问题做这样的事情:

            $userHash = md5($email);
            if ($userHash == $emailHash) {
              // etc...
            }
            

            因此每个语句一次做一件事,使调试更容易。

            【讨论】:

              【解决方案7】:

              我认为我们需要更多的代码,而不仅仅是你的 if 条件。在我的盒子上,我得到了一个正确的“what2”。

              if (md5($email) === $emailHash) 
              {
                  echo "do actions!";
              }
              else 
              {
                  echo "what2";
              }
              

              【讨论】:

                【解决方案8】:

                这是不可能发生的。当我们确定我们没有做错任何事情时,我们通常会认为语言中存在错误。但是代码中总有一些愚蠢的东西。您必须再次检查代码。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2013-06-14
                  • 2020-03-08
                  • 1970-01-01
                  • 2016-12-20
                  • 2013-09-05
                  • 2022-11-25
                  • 1970-01-01
                  • 2012-10-08
                  相关资源
                  最近更新 更多