2010-02-05 59 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... 
} 

因此每做一個聲明件事的時間,使調試更輕鬆。