PHP — Получение даты рождения из базы данных, превращение ее в возраст и, если возраст старше 15, повторное отправление их электронного письма из базы данных

#php #foreach

#php #foreach

Вопрос:

У меня есть школьный проект, над которым я работаю. Я должен получить дату рождения каждого пользователя из таблицы базы данных, затем вычислить возраст каждого пользователя. Затем, если их возраст старше 15, мне нужно повторить их электронное письмо.

Когда я запускаю этот код, он просто продолжает указывать Array вместо электронной почты пользователя. Я знаю, это потому, что я не использовал foreach для $email_array, но я не знаю, как это сделать в том же foreach, что и age.

Я исследовал объединение массивов foreach, но, похоже, не могу заставить это работать.

Заранее спасибо за вашу помощь.

Ниже приведен мой код на данный момент:

 <?php 
   session_start();
   include('phpcodes/connection.php');

   $import="SELECT * FROM table";
   $result = mysqli_query($con,$import);
   while($row = mysqli_fetch_array($result)) {
      $emaillist .= $row['email'] . ",";
      $doblist .= $row['dob'] . ",";
   }

   $dob_array = explode(",",$doblist);
   $email_array = explode(",",$emaillist);
   foreach($dob_array as $ages) {
      $today = date("d-m-Y");
      $diff = date_diff(date_create($ages), date_create($today));
      $age = $diff->format('%y');

      if ($age > '15') {
          echo $email_array;
      }
   }
?>
  

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

1. О, извините, когда я запускаю этот код, он просто продолжает указывать Array вместо электронной почты пользователя. Я знаю, это потому, что я не использовал foreach для $email_array, но я не знаю, как это сделать в том же foreach, что и age.

2. Способ, которым вы структурируете свой код, неоптимален для задачи, которую вы выполняете. Вместо того, чтобы создавать строку дат и электронных писем, затем превращать ее в массив и выполнять итерации по нему, вы можете просто сделать while($row=mysqli_fetch_array($result)){if(**compare dates**) echo row['email'];} … ps. Ответы на домашние вопросы по SO не приветствуются, лучшее, что мы можем сделать, это указать вам правильное направление.

Ответ №1:

Вы можете повторять key и value в foreach цикле

 $arrayAge = [
    13,
    22,
    17
];

$arrayName = [
    'Lisa',
    'Selina',
    'Bianca'
];

foreach ($arrayAge as $key => $age) {
    echo $age . PHP_EOL;
    echo $arrayName[$key];
}
  

Если вы выполнили сравнение в while цикле, вам не понадобится второй цикл:

 while($row = mysqli_fetch_array($result)) {
    if (/* the comparation */) {
        echo $row['email'];
    }
}