Intereting Posts

Array Loop Предполагая данные Nil?

Я создал автоматически заполняемый массив в подсчитанном цикле за каждый месяц с использованием временных меток, например 2016-06-11 00:00:00 – макет базы данных, из которого получается цикл:

TimeRecord | Views 2016-06-11 00:00:00 | 22 2016-08-11 00:00:00 | 44 

Теперь приведенный выше пример пропускает месяц 07 (июль), в этом месяце нет НИКАКИХ ДАННЫХ, поэтому, когда цикл проходит через этот месяц, он должен возвращать либо нуль, либо 0, но он возвращает ранее известный номер (который равен 22 в этом случае).

Для 2016-09 нет заданных данных, поэтому массив будет давать «44».

Код цикла и выборка из базы данных для генерации массива выглядит так:

 $startMonth = date("ymd"); $endMonth = date("ymd"); while ($Month <= 12){ $ViewsThisMonth = mysqli_fetch_object(mysqli_query($db, "SELECT SUM(Views) AS NumberFinalViews, EXTRACT(YEAR_MONTH FROM TimeRecord) AS YearMonth FROM BlogViews WHERE TimeRecord > '$startMonth' AND TimeRecord < '$endMonth' GROUP BY YearMonth")); if (is_null($ViewsThisMonth->NumberFinalViews)){ $ViewsThisMonth->NumberFinalViews = 0; } $ArrayTimeStamp[] = $ViewsThisMonth->NumberFinalViews; $Month = $Month + 1; $startMonth = date("ymd",strtotime("-$Month month")); } 

Пример возвращаемого кода JSON Encoded Array:

 [0,"29392","333","4000","4000","99","99","99","99","99","99","99"] 

Снимок экрана значений базы данных, вызвавших вышеупомянутый массив, можно найти здесь . Как вы можете видеть, 4000 повторяет себя дважды, так как нет записи за 5-й месяц, заставляя ее использовать данные за 4-й месяц. 99 также повторяется, так как нет значений для 6-12-го месяца, поэтому он использует значение 6-го месяца вместо возврата 0.

Если в течение этого месяца нет цикла TimeRecord, когда цикл проходит, я хочу, чтобы он возвращал 0, а не предполагайте, что номер представления совпадает с предыдущим месяцем.