2011-02-23 97 views
0

我正在製作一個搜索引擎,並且我已經制作了這樣一個查詢,它可以根據您想要做的不同類型的搜索(例如用戶名,城市,年齡等)進行組合。我已經到了必須執行IF語句以輸出正確結果的部分,但出於某種原因,我無法弄清楚它是如何選擇另一個IF語句的,而不是我想要的。混淆IF子句

該腳本回顯出IF的哪個塊已被執行用於調試,並且它說「年齡」塊被執行而不是我想要的「縣」。這是代碼,並用於記錄;正常和年齡如果工作得很好,所以我懷疑我看不到一個語法錯誤。我的邏輯明智嗎?

首先IF

if(($searchFromAge == null || $searchFromAge == "noOption") && ($searchToAge == null || $searchToAge == "noOption") && ($searchCounty == null || $searchCounty == "noOption") && ($searchCity == null || $searchCity == "By")){ 
echo "normal"; 
} 

年齡IF

elseif(($searchFromAge != null || $searchFromAge != "noOption") && ($searchToAge != null || $searchToAge != "noOption")){ 
echo "age"; 
} 

縣IF

} elseif($searchCounty != null || $searchCounty != "noOption"){ 
echo "county"; 
} 

腳本輸出:年齡

+0

如果您認爲自己已經有語法編輯器,請通過類似[PHPLint](http://www.icosaedro.it/phplint/)的方式運行您的代碼。 – 2011-02-23 16:36:12

回答

1

如果$ searchFromAge == 「noOption」,因爲它是這樣的情況將是真實的!= NULL。

Tou需要在條件中進行更改。

使用 ($searchFromAge != null && $searchFromAge != "noOption")如果條件。

這對你所有的條件都一樣。使用&&而不是||

+0

似乎有效。謝謝。 – PeterPetrelli 2011-02-23 16:42:19

+0

@Tomalak:謝謝,我會永遠銘記在心。 – Gaurav 2011-02-23 16:49:14

0

你做了你的邏輯否定錯誤。 (A == B || C == D)的否定爲(A != B && C != D),注意到&&

所以:

變爲:

$searchFromAge != null && $searchFromAge != "noOption" 

希望有所幫助。