我创建了下面的函数,它应该根据两个输入返回状态,但它总是在最后一个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语句中结束。以下代码无法提供正确的结果有什么问题?
根据你在问题中的评论,我认为你真正想做的是测试$vpc
的值,然后检查$bruto_margin_avg
的值是否适合$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));
产量
Array (
[0] => NO
[1] => 33% - 40%
)
根据您的输入,第一个条件不符合要求。
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))