php计数器循环输出24小时填充空值
我有一个sql结果,如下所示:php计数器循环输出24小时填充空值,php,loops,foreach,while-loop,counter,Php,Loops,Foreach,While Loop,Counter,我有一个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 |2
|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>";
}
while($row=mysql\u fetch\u row($hourlycalls)){
$hourly='0';
foreach($hourlycalls作为$val){
如果($row[1]=$val['hour'])){
$hourly=$val['count'];
打破
}
}
$result.=”
“$row[0]”
“$row[1]”
“$row[2]”;
}
我试着加上一个柜台,但就是没法用。
有什么想法/建议吗?将所有结果放在一个数组中,其索引为小时:
$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>";
}
($hour=0;$hour<24;$hour++)的{
如果(设置($results[$hour])){
$row=$results[$hour];
}否则{
$row=数组($date,$hour,0);
}
$row[1]=sprintf(“%02d:00,$row[1]);
$result.=”
“$row[0]”
“$row[1]”
“$row[2]”;
}
顺便说一句,我建议您摆脱使用
mysql\u fetch\u row
的习惯,改用mysql\u fetch\u assoc
。通过列名访问返回的值使代码更具可读性。:感谢您的输入!它现在确实正确了,并且正确地输出了日期和时间,只是现在所有计数都是0。我以为查询返回的时间像01:00
,而不仅仅是1
,所以我在数组中查找错误。现在试试。剩下的一件事似乎是,计数为0的行的日期显示了两次。我不明白这是怎么回事。我只在数组中放了一次,去掉如下内容:$row=array(substr($date,0,-13),$hour,0)