混淆IF条款

时间:2011-02-23 16:31:15

标签: php logic if-statement

我正在制作一个搜索引擎,并且我已经制作了这样的搜索工具,以便根据您想要进行的不同类型的搜索(例如,用户名,城市,年龄等)将查询放在一起。我来到我必须做IF语句以输出正确结果的部分,但由于某种原因我无法弄清楚它如何选择另一个IF语句而不是我想要它。

脚本回显出已经执行了哪个IF块用于调试,并且它表示执行“age”块而不是我想要的“county”。这是代码和记录; NORMAL和AGE if工作得很好,所以我怀疑我看不到语法错误。我做错了逻辑吗?

First IF

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

年龄如上

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

县IF

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

脚本输出: 年龄

2 个答案:

答案 0 :(得分:1)

$searchFromAge != null || $searchFromAge != "noOption"

如果$ searchFromAge ==“noOption”,则该条件为真,因为它是!= null。

Tou需要在条件下进行更改。

使用 if条件($searchFromAge != null && $searchFromAge != "noOption")

所有条件都一样。使用&&代替||

答案 1 :(得分:0)

你的逻辑否定是错误的。 (A == B || C == D)的否定为(A != B && C != D),注意到&&

所以:

$searchFromAge != null || $searchFromAge != "noOption"

变为:

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

希望有所帮助。