從數據庫查詢的時間是不連續的 如
前端的圖表需要連續的日期 但是數據庫中 不存在不存在連續的時間 php需要處理為一個月內連續的時間 如:[2017.08.25,2017.08.26,2017.08.27,2017.08.28] [4,-,5,6,7,8]將data替換為-即可 不知道怎么處理 求各位大神 支招
2 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
<?php
$data = array(
'date' => array(
'2017.08.24',
'2017.08.26',
'2017.08.28',
'2017.08.30',
'2017.08.31'
),
'data' => array(
1,
2,
3,
4,
5
)
);
$len = count($data['date']);
$oneDaySecond = 86400;
$newData = array();
for ($i = 1; $i < $len; $i++) {
$previous = strtotime(str_replace('.', '-', $data['date'][($i - 1)]));
$current = strtotime(str_replace('.', '-', $data['date'][($i)]));
$diff = $current - $previous;
if (!in_array($data['date'][($i - 1)], $newData['date'], true)) {
$newData['date'][] = $data['date'][($i - 1)];
$newData['data'][] = $data['data'][($i - 1)];
}
if ($diff > $oneDaySecond) {
for ($m = $previous + $oneDaySecond; $m < $current; $m += $oneDaySecond) {
$newData['date'][] = date('Y.m.d', $m);
$newData['data'][] = 0;
}
}
$newData['date'][] = $data['date'][$i];
$newData['data'][] = $data['data'][$i];
}
print_r($newData);
result
Array
(
[date] => Array
(
[0] => 2017.08.24
[1] => 2017.08.25
[2] => 2017.08.26
[3] => 2017.08.27
[4] => 2017.08.28
[5] => 2017.08.29
[6] => 2017.08.30
[7] => 2017.08.31
)
[data] => Array
(
[0] => 1
[1] => 0
[2] => 2
[3] => 0
[4] => 3
[5] => 0
[6] => 4
[7] => 5
)
)

SMILET
TA貢獻1796條經驗 獲得超4個贊
假如你獲得到的數據為:data = {"8.11":100, "8.15":100, "8.20":100 }
你新建一個從初始日期到結束日期的對象:newData = {"8.11":0, "8.12":0, "8.13":0, ···, "8.20":0}
然后遍歷data,將data里面的數據按照放進newData對應的位置,這樣就得到一個連續的、數據庫沒有的日期數據為0的新對象,然后把這個新數據返回出去。
這一步前端和后端做都可以,反正就是沒有的你就給補上0
- 2 回答
- 0 關注
- 485 瀏覽
添加回答
舉報
0/150
提交
取消