以下语句在运行时返回“do actions!what2”。这里发生了什么?似乎真假都被归还了!
if (md5($email) == $emailHash) {
echo "do actions!";
} else {
echo "what2";
}
答案 0 :(得分:4)
双重函数调用,显示真实条件和错误条件?您可以使用debug_print_backtrace函数生成堆栈跟踪,并查看它是否被多次调用。
答案 1 :(得分:2)
没机会 - 你要两次调用代码!
答案 2 :(得分:1)
这是发生此问题的实际代码吗?因为它现在如何,没有办法可能发生。如果它不是您的实际代码,请检查您在有条件之后但在第一个阻止之前是否有分号。
答案 3 :(得分:1)
如果代码在for
或while
循环中(或者在函数中被调用两次),则可能是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)
这种情况无法发生。当我们确信,我们没有做错任何事情时,我们通常会认为语言中存在错误。但是代码中总有一些愚蠢的东西。您必须再次检查代码。