第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 关于操作php 数组 进行相关计算的问题

关于操作php 数组 进行相关计算的问题

时间:2020-02-16 05:58:14

相关推荐

关于操作php 数组 进行相关计算的问题

后端开发|php教程

php

后端开发-php教程

个人引导源码,ubuntu上编译vlc,tomcat和域名的关系,多久学会爬虫,PHP外派能转正吗,盖州seolzw

$arr = array( array( imp => 1000, clk => 100, date => 0601 ), array( imp => 1002, clk => 102, date => 0602 ), array( imp => 1003, clk => 103, date => 0601 ));

求这个数组里相同日期的曝光总和、点击总和,用最简洁的代码表示出来

imp 曝光

clk 点击

date 日期

有赞后台模板源码,vscode 删除所有插件,ubuntu apk编辑,tomcat 进程自启动,eclipse 爬虫,php json封装,衡阳搜狗seo优化排名,常用网站首页代码,html表格模板 套用lzw

校园学工信息系统 源码,ubuntu怎么按软件,增加tomcat内存注册表,天眼查爬虫json,红谷滩新区php培训机构,石添seolzw

回复内容:

$arr = array( array( imp => 1000, clk => 100, date => 0601 ), array( imp => 1002, clk => 102, date => 0602 ), array( imp => 1003, clk => 103, date => 0601 ));

求这个数组里相同日期的曝光总和、点击总和,用最简洁的代码表示出来

imp 曝光

clk 点击

date 日期

php$a=array();foreach($arr as $v){ $a[$v[date]][clk]+=$v[clk]; $a[$v[date]][imp]+=$v[imp];}print_r($a);

php$res=[];foreach ($arr as $key => $value) { $res[$value[date]] =array(imp =>isset($res[$value[date]]) ? $res[$value[date]][imp]+$value[imp] : $value[imp],clk =>isset($res[$value[date]]) ? $res[$value[date]][clk]+$value[clk] : $value[clk],date =>$value[date] );}print_r(array_values($res));Array( [0] => Array ( [imp] => [clk] => 203 [date] => 0601 ) [1] => Array ( [imp] => 1002 [clk] => 102 [date] => 0602 ))

$tmp = array();foreach($arr as $k => $v) { $tmp[$k] = $v[date];}$tmp = array_unique($tmp);/* 去重后得Array( [0] => 0601 [1] => 0602)*/$tmp2 = array();foreach($tmp as $k => $v) { $tmp2[$v][imp] = 0; $tmp2[$v][clk] = 0;}/* 初始化得Array( [0601] => Array ( [imp] => 0 [clk] => 0 ) [0602] => Array ( [imp] => 0 [clk] => 0 ))*/foreach($tmp as $k => $v) { foreach($arr as $k2 => $v2) { if($v == $v2[date]) { $tmp2[$v][imp] += $v2[imp]; $tmp2[$v][clk] += $v2[clk]; } }}print_r($tmp2);/* 求和得Array( [0601] => Array ( [imp] => [clk] => 203 ) [0602] => Array ( [imp] => 1002 [clk] => 102 ))*/

来个reduce版本

1000, clk => 100, date => 0601 ), array( imp => 1002, clk => 102, date => 0602 ), array( imp => 1003, clk => 103, date => 0601 ));$result = array_reduce($arr, function($left, $right) { if(isset($right[imp])) $left[imp] += $right[imp]; if(isset($right[clk])) $left[clk] += $right[clk]; return $left;}, [ imp => 0, clk => 0]);print_r($result);

/58v94

专业问题。。学习了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。