2010-02-05 232 views
1

中返回true和false,则运行时以下语句返回“do actions!what2”。这里发生了什么?好像真的和假的都被退回了!如果语句在PHP

​​
+7

发布更多代码,听起来像它的执行不止一次 – 2010-02-05 21:17:17

+0

是的东西肯定是不正确的,东西不能同时是'真'和'虚假'别的事情正在发生那是没有显示 – 2010-02-05 21:20:57

+4

也许这是时候宇宙崩溃了! – 2010-02-05 21:23:46

回答

2

没有机会 - 您将代码调用两次!

1

这是这个问题发生的实际代码吗?因为现在是怎么回事,所以没有办法可以发生。如果这不是您的实际代码,请检查您的条件之后但在第一个块之前是否有分号。

4

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

1

如果代码是在forwhile环路(或以其它方式被称为在一个函数两次这样),那么它可能是该if正在评估真正在第一时间和假所述第二时间。否则,我看不出有什么理由会发生这种情况。

1

我想周围的代码是做错了。这个没有错。也可以尝试在你的if条件中放入三个等号===而不是两个。

0

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

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

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

1

我不知道究竟是在那里发生的,但我已经习惯成做这样的事情了同样的问题:

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

因此每做一个声明件事的时间,使调试更轻松。