失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php合并二维数组相同的key

php合并二维数组相同的key

时间:2022-02-07 17:46:31

相关推荐

php合并二维数组相同的key

后端开发|php教程

php

后端开发-php教程

有个二维数组:

国外视频抓取网站源码,推荐的vscode主题,ubuntu 直播 软件,tomcat起多个端口,爱好爬虫,php 客服 开源,SEO复试自我介绍,免费 网站 手机,dede模板修改视频lzw

$arr = array( array( um=>5,period=>3), array( um=>10,period=>3), array( um=>15,period=>9));

对period相同的值的数组,对num求和,怎么处理变成:

PHP手机影视网站源码,ubuntu打开只有背景,tomcat测试成功了,玉米虫爬虫,php判断当前号数区间,seo从基础到入门seo教程lzw

$arr = array( array( um=>15,period=>3), array( um=>15,period=>9));

项目管理 net 源码,vscode中新建页面,ubuntu目录保护,移轉tomcat,sqlite运行库下载,table固定表头 插件,前端两大框架先学哪个,爬虫频率过快怎么办,网站php程序员,吕梁seo推广软件,vs 网站管理工具,html网页上传图片代码,系统后台登录html模板lzw

回复内容:

有个二维数组:

$arr = array( array( um=>5,period=>3), array( um=>10,period=>3), array( um=>15,period=>9));

对period相同的值的数组,对num求和,怎么处理变成:

$arr = array( array( um=>15,period=>3), array( um=>15,period=>9));

把 @mot 的答案补完优雅一下:

$arr = array( array( um=>5,period=>3), array( um=>10,period=>3), array( um=>15,period=>9));$temp = array();foreach($arr as $item) { list($n, $p) = array_values($item); $temp[$p] = array_key_exists($p, $temp) ? $temp[$p]+$n : $n;}$arr = array();foreach($temp as $p => $n) $arr[] = array( um=>$n, period=>$p);print_r($arr);

$tmp = array();foreach( $arr as $one){ if( $tmp[$one[period]] ) $tmp[$one[period]] = $tmp[$one[period]] + $one[ um]; else $tmp[$one[period]] = $one[ um];}$arr = array();foreach ( $tmp as $key => $value ) $arr[] = array( um => $value , period => $key );

function merge($items){

$data = array();

foreach ($items as $v) {

$p = $v[‘period’];

if(array_key_exists($p, $data)){

$data[$p][‘num’] += $v[‘num’];

}else{

$data[$p] = array(‘num’=>$v[‘num’],’period’=>[‘period’]);

}

}

return $data = array_values($data);

}

$arr1 = array( array( um=>5,period=>3), array( um=>10,period=>3), array( um=>15,period=>9));$arr2 = array();foreach($arr1 as $k1 => $v1) { if(empty($arr2)) { $arr2[] = $v1; } else { foreach ($arr2 as &$v2) { if($v1[period] == $v2[period]) {$v2[ um] += $v1[ um];} else {$arr2[] = $v1; } } }}

5, period=>3), array( um=>10,period=>3), array( um=>15,period=>9));$result = array();$arr = array_reduce($arr, function($prev, $val) use (&$result) { if (empty($prev)) { return $val; } if (isset($prev[period]) && $prev[period] === $val[period]) { $prev[ um] += $val[ um]; } else { $result[] = $val; $prev = array(); } empty($prev) || $result[] = $prev; return $prev;}, array());print_r($result);

$arr = array( array( um=>5,period=>3), array( um=>10,period=>3), array( um=>15,period=>9));$keyvalue = [];array_filter( $arr, function ($item) use (&$keyvalue) { if (array_key_exists($item[period], $keyvalue)) { $keyvalue[$item[period]] = [period => $item[period], um => $item[ um] + $keyvalue[$item[period]][ um] ]; return false; } else { $keyvalue[$item[period]] = [period => $item[period], um => $item[ um] ]; return true; } });var_dump(array_values($keyvalue));

感觉这样可能简单点。

如果觉得《php合并二维数组相同的key》对你有帮助,请点赞、收藏,并留下你的观点哦!

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