使用“0.5”时小于/大于舍入错误

时间:2016-01-14 23:48:50

标签: php if-statement

我对此感到很沮丧。我试图让它将出生日期转换为年龄,然后根据年龄,最终我将指定某些基于年龄的形式显示的问题。这是我现在开始研究的第一部分,我似乎无法弄清楚为什么它总是显示0-6个月,即使它应该是7-12个月。

编辑,因为我编写了我已经过去的代码@ _ @。

我用于生日的代码一直是0或者什么的。我不确定。

可能是圆形还是不能使用“0.5”的东西?

<?php

  $birthDate = "2/17/2015";
  $birthDate = explode("/", $birthDate);
  $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md")
? ((date("Y") - $birthDate[2]) - 1)
: (date("Y") - $birthDate[2]));

if($age <= 0.5){               
    echo "0-6 Months";
}
elseif($age > 0.5 && $age < 1) {                
    echo "7-12 Months Old"; 
}
elseif($age >= 1 && $age < 3) {                 
    echo "1-2 Years Old";   
}    
elseif($age >= 2 && $age < 5) {                 
    echo "2-4 Years";                    
} 
elseif($age >= 1 && $age < 3) {                 
    echo "5-8 Years Old";   
}
elseif($age >= 2 && $age < 5) {                 
    echo "9-11 Years";                   
} 
elseif($age >= 1 && $age < 3) {                 
    echo "12-17 Years Old"; 
}
elseif ($age >= 18 && $age < 65) {              
    echo "Adult";                
} 
elseif ($age >= 65){               
    echo "Senior";               
} 
else {               
    echo "Whoops!";
}

echo "</br></br>";

1 个答案:

答案 0 :(得分:-1)

你在这方面的工作太过努力了。您需要DateTime课程。然后你可以做这样的事情:

$birthDate = new DateTime("2/17/2015");
$now = new DateTime();
$interval = $birthDate->diff($now);
echo $interval->format('%y years and %a days'); // 0 years and 331 days

$years = $interval->format('%y');
$days = $interval->format('%a');

if ($years == 0) {
    echo ($days < 183) ? '0-6 months' : '7-12 months';
}
else {
    switch ($years) {
        case < 3:
            echo '1-2 years old';
        case < 5:
            echo '2-4 years old';
        // etc
    }
}