2011-02-23 93 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" 

希望有所帮助。