ik выглядит так, что внутри foreach мой код переходит в оператор if и else в каждом цикле

#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