#php #foreach
#php #foreach
Вопрос:
Я делаю запрос в свою базу данных, когда получаю событие за последние 7 дней. Затем я хотел бы проверить, не было ли в течение нескольких дней на прошлой неделе у меня записей, поэтому я могу получить только хороший массив данных с ‘ ‘, если нет ввода, и правильные данные, если данные были введены.
Допустим, у меня есть семь последних дней :
[27,26,25,24,23,22,21];
Затем, если моя дата в БД не равна одной из дат в этом массиве, в моем результате массива я помещу ' '
;
Итак, в моем примере у меня нет записи для 24 и 23, поэтому я хотел бы иметь :
[data, data, data,'','',data,data];
Итак, я попробовал этот код :
while($matinal = mysqli_fetch_object($get_matinal)) {
foreach($lab as $key => $l):
if (convertDateYmd($matinal->created_at) === $l ) {
$matinal_result[$key] = $matinal->moyenne_fatigue;
} else{
}
endforeach;
}
Таким образом, в основном $get_matinal — это мой запрос и получил 5 значений (5 записей на прошлой неделе).
$ lab — это массив с 7 датами: [21,22,23,24,25,26,27];
Итак, что я пытаюсь сделать, так это каждый раз, когда я читаю первое значение моего запроса => $get_matinal
, я запускаю foreach
цикл, чтобы проверить, присутствует ли дата этих строк в моем $lab
массиве. Если да, я хотел бы сохранить значение, если нет, я хотел бы иметь пустую строку, если результат.
Но с моим кодом похоже, что я каждый раз ввожу else … если я удаляю else, у меня все еще есть 5 верных ответов.
Поэтому мой массив $matinal_result должен быть = [data,data,data,'','',data,data]
или я получаю ['','','','','','','']
…
Комментарии:
1. почему вы не передаете $lab в запрос для получения данных? угрюмый, ты не запрашиваешь все.. вы ожидаете, что он будет хорошо работать со 100 тыс. строк, просто чтобы выбрать 7 строк?
2. Мой плохой результат — 7 значений
3. Как я могу передать $lab в запрос? Если возможно, это было бы намного проще, чем мое хитрое решение..
4. смотрите: sqlfiddle.com /#!9/4d28bd/10/0