我正在尝试制作一个BMI计算器...到目前为止,除了实际的BMI范围(下面,正常,上面)之外,我还能正常显示所有内容。
我的if / elseif语句很可能存在问题,因为输出总是错误的。这是我的代码:
<?php
$weight = $_POST['txtWeight'];
$height = $_POST['txtHeight'];
$selected_unit = $_POST['optUnit'];
$metric_status = 'unchecked';
$imperial_status = 'unchecked';
$impCalc = ($weight * 703) / ($height * $height);
$metCalc = $weight / ($height * $height);
$below = 'below average.';
$normal = 'normal.';
$above = 'above average.';
if (($impCalc < 18.5) || ($metCalc < 18.5))
{
$bmi = $below;
}
elseif (($impCalc >= 18.5 && $impCalc <= 24.9) || ($metCalc >= 18.5 || $metCalc <= 24.9))
{
$bmi = $normal;
}
else
{
$bmi = $above;
}
if (isset($_POST['btnEnter']))
{
$selected_unit = $_POST['optUnit'];
if($selected_unit == 'imperial')
{
$imperial_status = 'checked';
echo "A height of {$height} inches and a weight of {$weight} pounds = {$impCalc} BMI. Your BMI calc is: {$bmi}";
}
else if($selected_unit =='metric')
{
$metric_status = 'checked';
echo "A height of {$height} meters and a weight of {$weight} kilograms: {$metCalc} BMI. Your BMI calc is: {$bmi}";
}
}
?>
我做错了什么?
编辑:我的表单上有两个单选按钮,用户可以选择公制(米和公斤)或英制(英寸和磅)。我希望它能够根据选择的方法计算(英制BMI由(重量* 703)/(高度*高度)计算,公制是重量/(高度*高度)。我的输出总是不稳定的(它确实正确的BMI计算,至少从我所看到的,但当我需要它输出低于,正常或以上时,它总是显示错误的东西。
答案 0 :(得分:2)
我不确切知道BMI,但这条线看起来很好奇:
elseif (($impCalc >= 18.5 && $impCalc <= 24.9) || ($metCalc >= 18.5 || $metCalc <= 24.9))
我认为应该是这样的:
elseif (($impCalc >= 18.5 && $impCalc <= 24.9) || ($metCalc >= 18.5 && $metCalc <= 24.9))
否则它没有意义,因为这些标准符合所有数字。