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

avatar
Missprogram
8 августа 2021 в 20:43
58
2
0

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

<?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>";
?>
Источник
KIKO Software
8 августа 2021 в 21:06
0

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

Amal nandan
9 августа 2021 в 04:05
0

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

Ответы (2)

avatar
Mohsen Nazari
8 августа 2021 в 21:11
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>;
avatar
Scripter
8 августа 2021 в 21:14
1

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

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

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

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