我有一个应用程序,可以在两个日期之间从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循环遍历daterange的选定日期,并从日期匹配的关联数组中拉出值,如果没有插入,则插入零值,如下所示:
[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/