我有一个代码,可以每小时从数据库中生成最新 10小时的总帖子。现在,问题是只显示了几个小时的帖子,但这对我不起作用,因为我想将整个事物显示为图表。
当前数组的示例:
array("12"=>"20403",
"15"=>"17017",
"17"=>"84013");
键表示24格式的小时。所以我需要的是一个用0值填充空小时的函数。
示例:
$currenthour=date('H'); // i think it may be based on the latest hour.
array("11"="0",
"12"=>"20403",
"13"=>"0",
"14"=>"0",
"15"=>"17017",
"16"=>"0",
"17"=>"84013",
"18"=>"0",
"19"=>"0",
"20"=>"0");
谢谢!
答案 0 :(得分:2)
foreach(range(0, 23) as $hour)
if(!isset($ary[$hour]))
$ary[$hour] = 0;
ksort($ary);
只填写最后几个小时,你可能需要像
这样的东西function last_hours($hour, $cnt) {
return $hour < $cnt - 1 ?
array_merge(range($hour, 0), range(23, 25 - $cnt + $hour)) :
range($hour, $hour - $cnt + 1);
}
然后
$now = date("G");
$new_array = array();
foreach(last_hours($now, 10) as $hour)
$new_array[$hour] = isset($ary[$hour]) ? $ary[$hour] : 0;
答案 1 :(得分:1)
使用array_fill
或使用循环执行(假设$hours
是您的数组:
$currenthour=date('H');
for($i = $currenthour; $i < 23; $i++)
if(!isset($hours[$i]))
$hours[$i] = 0;
答案 2 :(得分:0)
您可以简单地遍历数组,并查看索引处的值是否已设置。像这样:
使用过去10小时进行编辑:
$currenthour=date('H')
$beginrange = $currenthour - 10
if ($beginrange =< 0)
$beginrange = 23 + $beginrange
$endrange = $currenthour
//set up the for loop
foreach(range($beginrange, $endrange) as $i)
//check if the element is set
if(!isset($array[$i]))
// set it
$array[$i] = 0;