低于IF条件无法正常工作

时间:2016-02-12 06:01:54

标签: php if-statement

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

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

第四个是像可转让的最低工资一样的选择。所以前两个是整数,第三个是项目的下拉列表。

2 个答案:

答案 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

你说:

  1. 我需要前两个中的一个(pref_sal_brn和pref_sal_end),如果其中任何一个不为空
  2. 然后第三个应该是强制性的。 (如果以上情况属实,请执行此操作)
  3. 如果这三个应该是真的(我理解上面的1和2应该是真的)
  4. 或第四个是这样的。 (或如果第四个是真的那么整个过程都是真的)
  5. 打破它们并将它们变成代码:

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