php根据二维数组中的某一元素相等,另一个元素相加
二维数组:$taskData Array
(
[0] => Array
(
[area] => 1
[winsFlag] => 7
[count] => 3
) [1] => Array
(
[area] => 1
[winsFlag] => 3
[count] => 2
) [2] => Array
(
[area] => 1
[winsFlag] => 5
[count] => 2
) [3] => Array
(
[area] => 2
[winsFlag] => 6
[count] => 2
) [4] => Array
(
[area] => 2
[winsFlag] => 3
[count] => 2
) [5] => Array
(
[area] => 3
[winsFlag] => 7
[count] => 3
) [6] => Array
(
[area] => 3
[winsFlag] => 1
[count] => 1
) [7] => Array
(
[area] => 4
[winsFlag] => 2
[count] => 1
) [8] => Array
(
[area] => 4
[winsFlag] => 2
[count] => 1
) )
根据area相同将count相加
$item=[];
foreach($taskData as $k=>$v){
if(!isset($item[$v['area']])){
$item[$v['area']] = $v;
}else{
$item[$v['area']]['count'] += $v['count'];
}
}
结果:得到一个新的数组 $item
Array
(
[1] => Array
(
[area] => 1
[winsFlag] => 7
[count] => 7
) [2] => Array
(
[area] => 2
[winsFlag] => 6
[count] => 4
) [3] => Array
(
[area] => 3
[winsFlag] => 7
[count] => 4
) [4] => Array
(
[area] => 4
[winsFlag] => 2
[count] => 2
) )
根据需求改变一下,把相同的值取出来,其余拼接一起
$item=[];
foreach($equityInfos as $k=>$v){
if(!isset($item[$v['uid']])){
$item[$v['uid']] = $v;
}else{
$item[$v['uid']]['product_id'] .= ','. $v['product_id'];
}
}
上面说的是根据一个元素相等,假如要根据两个元素相等呢,下面就来解决
Array
(
[0] => Array
(
[send_detail_id] => 65379
[amount] => 1
[sn] => MB12-69-181
),
[1] => Array
(
[send_detail_id] => 65380
[amount] => 2
[sn] =>MB12-69-181
),
[2] => Array
(
[send_detail_id] =>65380
[amount] => 1
[sn] => MB12-69-181
),
[3] => Array
(
[send_detail_id] => 65382
[amount] => 1
[sn] => SA12-64-180N2001
)
)
如果两个字段send_detail_id和sn相同才合并求和,结果应该是这种
Array
(
[0] => Array
(
[send_detail_id] => 65379
[amount] => 1
[sn] => MB12-69-181
),
[1] => Array
(
[send_detail_id] => 65380
[amount] => 3 //和后面的相加了,第一个就不能和他相加
[sn] =>MB12-69-181
), [3] => Array
(
[send_detail_id] => 65382
[amount] => 1
[sn] => SA12-64-180N2001
)
)
其实很简单
foreach($arr as $v){
if(!isset($ret[$v['send_detail_id'].'_'.$v['sn']])){
$ret[$v['send_detail_id'].'_'.$v['sn']] = $v;
}else{
$ret[$v['send_detail_id'].'_'.$v['sn']]['amount'] += $v['amount'];
}
}
print_r(array_values($ret));
php根据二维数组中的某一元素相等,另一个元素相加的更多相关文章
- 找出一个二维数组中的"鞍点",即该位置上的元素在该行中最大,在该列中最小(也可能没有"鞍点"),打印有关信息.(提示:注意特殊情况:没鞍点或多个鞍点)
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { ][] = {}; ;i < ...
- php 将一个二维数组中两个相同的value 相同 指定值相加
array(3) { [0]=> array(7) { ["mlid"]=> int(1) ["num"]=> int(1) ["c ...
- word search(二维数组中查找单词(匹配字符串))
Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ...
- 剑指Offer-【面试题03:二维数组中的查找】
package com.cxz.question3; /* * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. * 请完成一个函数,输入这样的一个二维数组和 ...
- 剑指Offer面试题:2.二维数组中的查找
一.题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- php如何去掉二维数组中重复的元素?
$arr=array("=>array("a","b")); 我想得到的结果是:只输出第一项(第一项和第三项相同,去第一项)和第二项这个怎么解决 ...
- 剑指Offer 二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路法一: * 矩阵是 ...
- 剑指offer系列——二维数组中,每行从左到右递增,每列从上到下递增,设计算法找其中的一个数
题目:二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数 分析: 二维数组这里把它看作一个矩形结构,如图所示: 1 2 8 2 4 9 12 4 7 10 13 6 8 11 ...
- 剑指offer一:二维数组中的查找
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 这是一个顺序二维 ...
- _jobdu_1384:二维数组中的查找
/************************************************************************/ /* 题目描述: 在一个二维数组中,每一行都按照从 ...
随机推荐
- ESP8266 SDK开发: 开发环境搭建
前言 这节安装下编程软件, 可以去官网下载, https://wiki.ai-thinker.com/ai_ide_install 也可以安装我提供的(我使用的为官方以前版本) 建议安装我提供的,有问 ...
- Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:mav问题
1.导致问题原因:从装系统,从win7改到win10 由于重装了系统,打开eclipse时,maven验证会出错,点击pom文件,会发现有红色的Cannot read lifecycle mappin ...
- React_01_ECMAScript6
ECMAScript6 1.ES6简介 1.1.什么是ES6 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目 ...
- cocos:C++ 导出到lua, cocos2dx_extension.ini修改
cocos:C++ 导出到lua, cocos2dx_extension.ini修改 [zq] //zq section, 需要和genbindings.py中的配置相同 # the prefix t ...
- Android Studio 之 ROM【1】, Entity,Dao,Database
Android Studio 之 ROM, Entity,DAO,DataBase 1.Entity 实体类 package com.example.roombasic; import android ...
- CentOS安装Hadoop
Hadoop的核心由3个部分组成: HDFS: Hadoop Distributed File System,分布式文件系统,hdfs还可以再细分为NameNode.SecondaryNameNode ...
- Linux 下配置 iSCSI 客户端
安装客户端软件 Redhat/Centos: yum install -y iscsi-initiator-utils Debian/Ubuntu: apt-get install open-iscs ...
- javascript 函数的暂停和恢复
javascript 异步编程从来都是一个难题,最开始我们用 callback,但随之触发了回调地狱,于是"发明" Promise 解决 callback 嵌套过深的问题.然而由于 ...
- 认识一下microbit扩展板robotbit
在我们买到的套件中,另一块叫robotbit扩展板,所谓扩展板,是把控制板上的针脚引出来,方便我们扩展驱动连接电机.舵机.及各种传感器以展功能. 介绍如下 :下面 反面: 官方文档:http://le ...
- json对象与string相互转换教程
一.说明 1.1 背景说明 json对象与string相互转换,这东西想写了很多次,但总觉得网上教程比较成熟,所以之前每次都放弃了.但今天又被string转json对象折腾了半天,实在受不了,所以还是 ...