Как рассчитать возраст человека, используя такие переменные, как: год, месяц, день в PHP

#php #html #if-statement #variables #operators

Вопрос:

Я попытался определить возраст человека, используя приведенный ниже код, хотя я хотел, чтобы вывод был вашим точным возрастом, он показывает неправильный возраст, если ваш день рождения был до текущей даты, но правильный возраст, если ваш день рождения после текущей даты, пожалуйста, исправьте код

 <?php
   $name = $_POST['name'];
   $month = $_POST['month']; 
   $day = $_POST['day'];  
   $year = $_POST['year'];
   $age = date('Y') - $year - 1 ;
   if (date('F') <= $month) {
        $age = date('Y') - $year;
   } 
   $nos = $_POST['nos'];
   $gender = $_POST['gender'];
   $loa = $_POST['loa'];

   echo "<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'><b>`Name:`</b> $name</div>";
   echo "<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'><b>`Birth Date:`</b> 
   $month-$day-$year </div>";
   echo "<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'><b>`Age:`</b> aprox. 
   $age</div>";
   echo "<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'><b>`Name of School:`</b> 
   $nos</div>";
   echo "<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'><b>`Gender:`</b> 
   $gender</div>";
   echo "<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'><b>`Level of Academics:`</b> 
   $loa</div>";
?>
 

Комментарии:

1. «это не работает» — плохое описание проблем, с которыми вы сталкиваетесь. Вы получаете чистую страницу? ошибки? Является ли результат неверным? Если да, то как? И т.д. Можете ли вы привести примеры требуемых входных и выходных данных?

2. Пожалуйста, добавьте лучшее название, и где вы застряли сейчас, и добавьте ожидаемые ввод и вывод для этого prbm

Ответ №1:

Вы можете использовать это для расчета возраста:

 $today = new DateTime("now");
$birthdate = new DateTime("$year-$month-$day");
$age = $today->diff($birthdate)->y;
 

Обновить:
Таким образом, весь код с некоторой очисткой будет выглядеть так:

 <?php
    $name = $_POST['name'];
    $month = $_POST['month'];
    $day = $_POST['day'];
    $year = $_POST['year'];
    $today = new DateTime("now");
    $birthdate = new DateTime("$year-$month-$day");
    $age = $today->diff($birthdate)->y;
    $nos = $_POST['nos'];
    $gender = $_POST['gender'];
    $loa = $_POST['loa'];
?>
<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'>
    <b>`Name:`</b>
    <?php echo $name; ?>
</div>;
<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'>
    <b>`Birth Date:`</b>
    <?php echo $birthdate->format('Y-m-d'); ?>
</div>;
<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'>
    <b>`Age:`</b> aprox.
    <?php echo $age; ?>
</div>;
<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'>
    <b>`Name of School:`</b>
    <?php echo $nos; ?>
</div>;
<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'>
    <b>`Gender:`</b>
    <?php echo $gender; ?>
</div>;
<div style ='font:21px Arial,tahoma,sans-serif;color:#7a1ac4'>
    <b>`Level of Academics:`</b>
    <?php echo $loa; ?>
</div>;
 

Ответ №2:

В зависимости от вашего кода, F его следует заменить на n :

F
Полное текстовое представление месяца, например, с января по март
, с января по декабрь

n
Числовое представление месяца, без ведущих нулей
с 1 по 12

    if (date('n') <= $month) {
        $age = date('Y') - $year;
   }