我有一个应用程序,它从两个日期之间的 mysql 中提取一些信息并返回一个关联数组。我正在使用此信息生成一个图表,但数据库中没有可返回信息的日期缺少日期。我无法在 mysql 端修复此问题,因为我只有对数据库的只读访问权限。
我的数据库方法检索如下所示的关联数组:
[0] => Array
(
[number_of_calls] => 151
[total_call_time] => 00:01:30
[average_call] => 00:02:00
[DATE(calldate)] => 2016-03-18
[direction] => outbound
)
我希望做的是从我的表单创建一个日期范围,如下所示:
//create data range array
$begin = new DateTime( $datefrom );
$end = new DateTime( $dateto );
$end = $end->modify( '+1 day' );
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
然后使用 foreach 循环迭代日期范围的选定日期,并从日期匹配的关联数组中提取值,如果不匹配则插入零值,如下所示:
[number_of_calls] => 0
[total_call_time] => 00:00:00
[average_call] => 00:00:00
我还需要最终的数组以日期顺序结束。有人可以帮我解决这个问题吗?
最佳答案
您可以转换 $result
数组以使用 DATE(calldate)
作为键。
$keys = [];
foreach ($result as $item) {
$keys[] = $item['DATE(calldate)'];
}
$result = array_combine($keys, $result);
你的数组将如下所示:
[2016-03-18] => Array
(
[number_of_calls] => 151
[total_call_time] => 00:01:30
[average_call] => 00:02:00
[DATE(calldate)] => 2016-03-18
[direction] => outbound
)
您可以通过简单的命令检查日期是否显示:
$key = $datevalue->format('Y-m-d');
if (isset($result[$key])) {
// date exists, use it
} else {
// date not exists, create empty value
}
关于php - 为 foreach 循环中缺失的项目创建零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36711910/