我创建了下面的函数,该函数应该基于两个输入返回状态,但是它始终以最后的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语句中结束。下面的代码无法提供正确的结果怎么了?
答案 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));
答案 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))