php - 填补多维数组中的空白

标签 php sql mysql

我有一个来自这个 mysql 查询的数组:

SELECT COUNT(*) as opens, HOUR(FROM_UNIXTIME(open_date)) as hour 
FROM tracking WHERE open_id = 10 GROUP BY HOUR(FROM_UNIXTIME(open_date)) 

它让我可以根据每小时获得打开。但是,由于在特定时间没有打开任何东西,因此时间存在一些差距。我怎样才能填补空白,即转动这个数组:

Array ( 
[0] => Array ( [opens] => 9 [hour] => 0 ) 
[1] => Array ( [opens] => 2 [hour] => 3 ) )

进入:

Array ( 
[0] => Array ( [opens] => 9 [hour] => 0 ) 
[1] => Array ( [opens] => 0 [hour] => 1 ) 
[2] => Array ( [opens] => 0 [hour] => 2 ) 
[3] => Array ( [opens] => 2 [hour] => 3 ) )

换句话说,用 0 个打开来填补缺失的时间?我可以更改我的 sql 查询以使其正常工作还是必须通过 PHP?

感谢大家的帮助。

最佳答案

$aHours = array();

foreach (range(0,23) as $nHour){

    $aHours[] = array('opens' => 0, 'hour' => $nHour);

}

// your query goes here with result into $aMyQueryResult

foreach ($aMyQueryResult as $aOpensHour){

  $aHours[$aOpensHour['hour']] = $aOpensHour;

}

关于php - 填补多维数组中的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4639991/

相关文章:

php - 如何组合多对多表中所有值的 select 语句

PHPSpreadsheet - 如何创建一个额外的标签?

mysql - SQL查找字符串加选项字符

php - SQL - 搜索表单中的多个表

php - MySQL WHERE LIKE 在最后一个字符中包含 %

mysql - 停止来自 mysql 终端的警告

php - 获取具有特定值的最新数据库条目

PHP:字符串数据-属性被分割

sql - 我如何优化此 SQL 查询以摆脱文件排序和临时表?

Python、SqlAlchemy : Many to many relationship, 找到那些没有的