如果语句在PHP中返回true和false

时间:2010-02-05 21:15:40

标签: php if-statement

以下语句在运行时返回“do actions!what2”。这里发生了什么?似乎真假都被归还了!

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

8 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

如果代码在forwhile循环中(或者在函数中被调用两次),则可能是if正在评估为真第一次和假第二次。否则,我认为没有任何理由说明会发生这种情况。

答案 4 :(得分:1)

我猜周围的代码做错了。这个没什么不对。同时尝试在if条件中输入三个等号===而不是两个。

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

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

相关问题