#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'];
}
}