我有一个if语句,如下所示。但它不工作我不知道原因。
if ((($posted['pref_sal_brn'] != null || $posted['pref_sal_end'] != null) && $posted['pref_sal_prd'] != -1) || $posted['pref_sal_optn'] != -1){
// Success code
} else {
// Else Part
}
我的代码有什么问题? 在这里,我需要前两个中的一个,如果任何一个不是空的,那么第三个应该是强制性的。 如果这三个应该是真的,或者第四个是真的这样。
编辑:
array(4) { ["pref_sal_brn"]=> string(3) "234" ["pref_sal_end"]=> string(3) "500" ["pref_sal_prd"]=> string(2) "47" ["pref_sal_optn"]=> string(2) "51" }
这是输出,前两个参数是工资开始和结束,第三个是期间选项,如日,月,周,
第四个是像可转让的最低工资一样的选择。所以前两个是整数,第三个是项目的下拉列表。
答案 0 :(得分:1)
刚刚在phpfiddle.org上测试了你的代码,它运行正常。它将按照预期打印成功 `
$posted['pref_sal_brn'] = "234";
$posted['pref_sal_prd'] = "47";
$posted['pref_sal_end'] = "500";
$posted['pref_sal_optn'] = "51";
if (( ($posted['pref_sal_brn'] != null || $posted['pref_sal_end'] != null) && $posted['pref_sal_prd'] != -1) || $posted['pref_sal_optn'] != -1) {
echo 'success';
} else {
echo 'failure';
}
>
答案 1 :(得分:0)
这个答案是基于我在阅读和分析你的问题时所理解的,你的问题有点难以理解,但这是我到目前为止所掌握的。如果我错了,请纠正我
根据我的理解,你不能用一个衬垫条件。你可能想把它们分成单独的ifs
你说:
打破它们并将它们变成代码:
// CHECK FIRST IF THE pref_sal_optn is TRUE, IF IT IS TRUE THEN DISREGARD OTHER CONDITION
if ($posted['pref_sal_optn'] != -1) {
// success
}
// NOW CHECK IF pref_sal_brn OR pref_sal_end IS NOT NULL
elseif ($posted['pref_sal_brn'] != null || $posted['pref_sal_end'] != null) {
// YOU DISCOVERED THAT EITHER ONE OF pref_sal_brn OR pref_sal_end IS NOT NULL THEN CHECK IF pref_sal_prd IS != -1 IF TRUE THEN DO SUCCESS AGAIN
if ($posted['pref_sal_prd'] != -1) {
// success
} else {
// error
}
} else {
// error
}