函数未返回预期结果

时间:2018-10-22 05:22:38

标签: php function if-statement

我创建了下面的函数,该函数应该基于两个输入返回状态,但是它始终以最后的if语句结尾。我不知道为什么它在最后一个结尾。如果我对最后一个发表评论,则结束于上面的一个。

    //Function to check if margin is OK or not
function check_margin($vpc, $bruto_margin_avg) {
    if(($vpc >= 1 && $vpc <= 15000) && ($bruto_margin_avg >= 33 && $bruto_margin_avg <= 40)) {
        //IF VPC is between 0-15000kn and bruto margin is between 33-40%
        $bruto = 'OK';
        $comment = '1';
    } else {
        $bruto = 'NO';
        $comment = '33% - 40%';
    }

    if(($vpc >= 15000 && $vpc <= 50000) && ($bruto_margin_avg >= 0 && $bruto_margin_avg <= 2)) {
        $bruto = 'OK';
        $comment = '2';
    } else {
        $bruto = 'NO';
        $comment = '25% - 30%';
    }

    if(($vpc >= 50000 && $vpc <= 80000) && ($bruto_margin_avg >= 23 && $bruto_margin_avg <= 27)) {
        $bruto = 'OK';
        $comment = '3';
    } else {
        $bruto = 'NO';
        $comment = '23% - 27%';
    }

    if($vpc > 80000 && $bruto_margin_avg > 21) {
        $bruto = 'OK';
        $comment = '';
    } else {
        $bruto = 'NO';
        $comment = '> 21%';
    }

    return array($bruto, $comment);
}

我的输入参数是:

  $vpc = 1560.00;
  $bruto_margin_avg = 14.952937358001;

基于输入结果,它应该在第一个if语句中结束。下面的代码无法提供正确的结果怎么了?

2 个答案:

答案 0 :(得分:1)

根据您在问题中的评论,我认为您真正想做的是测试$vpc的值,然后检查$bruto_margin_avg的值是否适合{{ 1}}。这段代码可以做到:

$vpc

输出

// Function to check if margin is OK or not
function check_margin($vpc, $bruto_margin_avg) {
    if ($vpc >= 1 && $vpc <= 15000) {
        if ($bruto_margin_avg >= 33 && $bruto_margin_avg <= 40) {
        //IF VPC is between 0-15000kn and bruto margin is between 33-40%
            $bruto = 'OK';
            $comment = '1';
        } else {
            $bruto = 'NO';
            $comment = '33% - 40%';
        }
    }

    if ($vpc >= 15000 && $vpc <= 50000) {
        if ($bruto_margin_avg >= 0 && $bruto_margin_avg <= 2) {
            $bruto = 'OK';
            $comment = '2';
        } else {
            $bruto = 'NO';
            $comment = '25% - 30%';
        }
    }

    if ($vpc >= 50000 && $vpc <= 80000) {
        if ($bruto_margin_avg >= 23 && $bruto_margin_avg <= 27) {
            $bruto = 'OK';
            $comment = '3';
        } else {
            $bruto = 'NO';
            $comment = '23% - 27%';
        }
    }

    if ($vpc > 80000) {
        if ($bruto_margin_avg > 21) {
            $bruto = 'OK';
            $comment = '';
        } else {
            $bruto = 'NO';
            $comment = '> 21%';
        }
    }

    return array($bruto, $comment);
}

$vpc = 1560.00;
$bruto_margin_avg = 14.952937358001;
print_r(check_margin($vpc, $bruto_margin_avg));

Demo on 3v4l.org

答案 1 :(得分:0)

根据您的输入,第一个条件不满足。

if(($vpc >= 1 && $vpc <= 15000) && ($bruto_margin_avg >= 33 && $bruto_margin_avg <= 40))

在以下条件下,请完全填写您的输入。但是

($vpc >= 1 && $vpc <= 15000)

以下不是。

($bruto_margin_avg >= 33 && $bruto_margin_avg <= 40)

如果必须检查两个条件中的任何一个为真,则您可以使用||。操作员。如下所示。

if(($vpc >= 1 && $vpc <= 15000) || ($bruto_margin_avg >= 33 && $bruto_margin_avg <= 40))