цикл счетчика php, чтобы положить 24 часа, заполните пустые значения

У меня есть результат sql как:

    |date       |hour |count  |
|2014-03-03 |20   |10     |
|2014-03-03 |18   |9      |

Я хочу отображать счет за 24 часа, но когда счет равен 0, он ничего не отображает.
Вывод, который я хотел бы увидеть:

2014-03-03 | 00:00 | 0
2014-03-03 | 01:00 | 0
2014-03-03 | 02:00 | 9
.
.
.
2014-03-03 | 23:00 |23

Ниже приведен код PHP, который генерирует таблицу, которая отображает почасовой подсчет:

          while ($row = mysql_fetch_row($hourlycalls)) {
$hourly = '0';
foreach($hourlycalls as $val) {
if($row[1] == $val['hour']) {
$hourly = $val['count'];
break;
}
}

$result .="<tr><td align=center>".$row[0]."</td>
<td align=center>".$row[1]."</td>
<td align=center>".$row[2]."</td></tr>";

}

Я пытался включить счетчик, но просто не могу заставить его работать.
Есть идеи / предложения?

0

Решение

Поместите все ваши результаты в массив, индекс которого равен часу:

$results = array();
while ($row = mysql_fetch_row($hourlycalls)) {
$results[$row[1]] = $row;
}

Затем используйте почасовой цикл для отображения значений из запроса или значения по умолчанию для часов, которые не были возвращены:

for ($hour = 0; $hour < 24; $hour++) {
if (isset($results[$hour])) {
$row = $results[$hour];
} else {
$row = array($date, $hour, 0);
}
$row[1] = sprintf("%02d:00", $row[1]);
$result .= "<tr><td align=center>".$row[0]."</td>
<td align=center>".$row[1]."</td>
<td align=center>".$row[2]."</td></tr>";
}

Кстати, я рекомендую вам выйти из привычки использования mysql_fetch_rowи использовать mysql_fetch_assoc вместо. Доступ к возвращаемым значениям по имени столбца делает код намного более читабельным.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]