以下 IF 条件无法正常工作


The Below IF condition is not working properly

我有一个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"  }

这是输出,前两个参数是工资开始和结束,第三个是期间选项,如日、月、周,

第四个是一些选项,比如,可协商,最低工资,像这样。 所以前两个是整数,第三个第四是项目的下拉列表。

刚刚在 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';
}

?>

这个答案是基于我在阅读和分析你的问题时的理解,你的问题有点难以理解,但这是我到目前为止所掌握的。如果我错了,请纠正我

根据我的理解,你不能用一个衬里条件来拥有它。 您可能希望将它们分解为单独的 IFS

你说:

  1. 我需要前两个(pref_sal_brn 和 pref_sal_end)中的任何一个,如果任何一个不为空
  2. 那么第三个应该是强制性的。(如果上述为真,请执行此操作)
  3. 如果这三个应该是真的(我理解上面的 1 和 2 应该是真的)
  4. 或者第四个是这样的。(或者如果第四个是真的,那么整个过程都是真的)

破坏它们并将它们转换为代码:

// 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
}