需求:根據開始、截止時間統計每天的資料
現在的從資料庫查出來的資料大概有10個二維數組,結構相同 如下:
<code>[ '0' => [ 'time' => '2016-8-3', 'data1'=> 'xxx', ... ] ]</code>
因為每個數組中有需要的字段,所以要把這10個二維數組進行組合,思路如下:
根據日期遍歷取資料
<code>while (strtotime($start_time) < strtotime($end_time)) { // 10个foreach foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } ... $start_time = strtotime($start_time . ' +1 day'); }</code>
最後想組合成的資料結構:
<code>[ '2016-8-3' => [ 'data' => '', ... ], '2016-8-4' => [ 'data' => '', ... ] .. ]</code>
可是看似那個while的性能很不好,跑不出數據,等待好久直接提示:
Maximum execution time of 30 seconds exceeded
各位大神有什麼好的建議嗎?
需求:根據開始、截止時間統計每天的資料
現在的從資料庫查出來的資料大概有10個二維數組,結構相同 如下:
<code>[ '0' => [ 'time' => '2016-8-3', 'data1'=> 'xxx', ... ] ]</code>
因為每個數組中有需要的字段,所以要把這10個二維數組進行組合,思路如下:
根據日期遍歷取資料
<code>while (strtotime($start_time) < strtotime($end_time)) { // 10个foreach foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } ... $start_time = strtotime($start_time . ' +1 day'); }</code>
最後想組合成的資料結構:
<code>[ '2016-8-3' => [ 'data' => '', ... ], '2016-8-4' => [ 'data' => '', ... ] .. ]</code>
可是看似那個while的表現很不好,跑不出數據,等待好久直接提示:
Maximum execution time of 30 seconds exceeded
各位大神有什麼好的建議嗎?
你的循環有問題,造成無盡循環了。你去打印下每次循環$start_time和$end_time到底是多少,肯定是strtotime($start_time) 永遠為真