热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:php统计每天价格,货币种类,汇总得算法和数据处理(后端和前段实现自动统计价格和币种类型)

//30天收入走势图public

//30天收入走势图
public function actionIncome()
{
/* $l sql查询后数据结构(分组日期和币种)
array[0=>array[
‘date‘ => ‘20180208‘,---日期
‘fee‘ => ‘10.00‘, ---价格
‘currency‘ => ‘USD‘, ---币种类型
],1=>array[
‘date‘ => ‘20180208‘,
‘fee‘ => ‘20.00‘,
‘currency‘ => ‘TWD‘,
]];
*/
$l = $this->incomeService->getDateIncomeList();
/* $type sql查询后数据结构(distinct币种字段)
array[0=>array[
‘currency‘ => ‘USD‘,
],1=>array[
‘currency‘ => ‘TWD‘,
]];
*/
$type = $this->incomeService->getCurrency();
$number = count($type);
/* $data_type 币种类型,数据处理过后结构
array[
0 => ‘USD‘,
1 => ‘TWD‘,
];
*/
$data_type = array();
foreach ($type as $key=>$value) {
$data_type[$key] = $value[‘currency‘];
}
/* $data_total 统计每天不同币种价格,数据处理过后结构
array[‘USD‘=>array[
‘20180208‘ => ‘10.00‘,
‘20180207‘ => ‘20.00‘,
],‘TWD‘=>array[
‘20180208‘ => ‘10.00‘,
‘20180207‘ => ‘20.00‘,,
]];
*/
$data_total = array();
foreach ($l as $key=>$value) {
$data_total[$value[‘currency‘]][$value[‘date‘]] = $value[‘fee‘];
}
/* $total_sum 统计30天币种汇总,数据处理过后结构
array[
‘USD‘ => ‘10.00‘,
‘TWD‘ => ‘20.00‘,
];
*/
$total_sum = array();
for($i=0; $i<$number; $i++){
$total_sum[$data_type[$i]] = empty($data_total[$data_type[$i]]) ? 0 : array_sum($data_total[$data_type[$i]]);
}
/* $time 统计时间,数据处理过后结构
array[‘20180208‘=>array[
‘date‘ => ‘20180208‘,
],‘20180207‘=>array[
‘date‘ => ‘20180207‘,
]];
*/
$time = array();
foreach ($l as $key=>$value) {
$time[$value[‘date‘]][‘date‘] = $value[‘date‘];
}
/* $list 汇总合并每天不同币种,数据处理过后结构
array[‘20180208‘=>array[
‘date‘ => ‘20180208‘,
‘USD‘ => ‘10.00‘,
‘TWD‘ => ‘20.00‘,
],‘20180207‘=>array[
‘date‘ => ‘20180207‘,
‘USD‘ => ‘10.00‘,
‘TWD‘ => ‘20.00‘,
]];
*/
$list = array();
foreach ($time as $key=>$value){
$list[$key][‘date‘] = $key;
for($i=0; $i<$number; $i++){
$list[$key][$data_type[$i]] = empty($data_total[$data_type[$i]][$key]) ? 0 : $data_total[$data_type[$i]][$key];
}
}
//Highcharts数据图表插件数据处理 ---(可以用百度等插件)
$chartsData = $this->searchChartsDataFormat($list);
$this->render(‘income‘, array(
‘list‘ => $list,
‘chartsData‘ => $chartsData,
‘total_sum‘ => $total_sum,
‘number‘ => $number,
‘data_type‘ => $data_type,
));
}
/**
* [searchChartsData 数据图表使用]
* @param string $sql [description]
* @return [type] [array]
*/
public function searchChartsDataFormat($data){
if(!is_array($data))return array();
$day=$total_CNY=$total_THB=$total_TWD=$total_USD=array();
$result=array();
foreach ($data as $k => $v) {
$day[]=‘\\‘‘.$v[‘date‘].‘\\‘‘;
$total_CNY[]= $v[‘CNY‘];
$total_THB[]= $v[‘THB‘];
$total_TWD[]= $v[‘TWD‘];
$total_USD[]= $v[‘USD‘];
}
$result[‘date‘]=implode(‘,‘, array_reverse($day) );
$result[‘total_CNY‘]=implode(‘,‘, array_reverse($total_CNY) );
$result[‘total_THB‘]=implode(‘,‘, array_reverse($total_THB) );
$result[‘total_TWD‘]=implode(‘,‘, array_reverse($total_TWD) );
$result[‘total_USD‘]=implode(‘,‘, array_reverse($total_USD) );
return $result;
}


//前端数据处理和后端数据处理逻辑相似





class="table-responsive">
class="table table-bordered table-condensed">

class="xmsb-admin-table-head">

phpfor($i=0; $i<$number; $i++){?>





foreach($listas$lv){?>


for($i=0; $i<$number; $i++){?>




class="xmsb-admin-table-head">

for($i=0; $i<$number; $i++){?>




日期 echo $data_type[$i]; ?>
echo $lv[‘date‘]; ?> echo $lv[$data_type[$i]]; ?>
汇总 echo $total_sum[$data_type[$i]]; ?>







 上面代码实现下图功能

技术分享图片



推荐阅读
author-avatar
边怀珠大海
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有