二维数组:$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根据二维数组中的某一元素相等,另一个元素相加的更多相关文章

  1. 找出一个二维数组中的"鞍点",即该位置上的元素在该行中最大,在该列中最小(也可能没有"鞍点"),打印有关信息.(提示:注意特殊情况:没鞍点或多个鞍点)

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { ][] = {}; ;i < ...

  2. php 将一个二维数组中两个相同的value 相同 指定值相加

    array(3) { [0]=> array(7) { ["mlid"]=> int(1) ["num"]=> int(1) ["c ...

  3. word search(二维数组中查找单词(匹配字符串))

    Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ...

  4. 剑指Offer-【面试题03:二维数组中的查找】

    package com.cxz.question3; /* * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. * 请完成一个函数,输入这样的一个二维数组和 ...

  5. 剑指Offer面试题:2.二维数组中的查找

    一.题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  6. php如何去掉二维数组中重复的元素?

    $arr=array("=>array("a","b")); 我想得到的结果是:只输出第一项(第一项和第三项相同,去第一项)和第二项这个怎么解决 ...

  7. 剑指Offer 二维数组中的查找

    题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路法一: * 矩阵是 ...

  8. 剑指offer系列——二维数组中,每行从左到右递增,每列从上到下递增,设计算法找其中的一个数

    题目:二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数 分析: 二维数组这里把它看作一个矩形结构,如图所示: 1 2 8 2 4 9 12 4 7 10 13 6 8 11 ...

  9. 剑指offer一:二维数组中的查找

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 这是一个顺序二维 ...

  10. _jobdu_1384:二维数组中的查找

    /************************************************************************/ /* 题目描述: 在一个二维数组中,每一行都按照从 ...

随机推荐

  1. css3中的box-sizing常用的属性有哪些?分别有什么作用?

    content-box:默认标准盒模型,总宽=width+padding+border+margin border-box:IE标准,怪异盒模型,总宽=width+margin inherit:从父元 ...

  2. fork()和vfork()的区别(转载)

    fork和vfork 转载 http://coolshell.cn/articles/12103.html 在知乎上,有个人问了这样的一个问题--为什么vfork的子进程里用return,整个程序会挂 ...

  3. shell(三)if流程控制

    流程控制 if 流程控制 基本语法 单分支结构 if [];then fi 两分支结构 if [];then else fi 多分支结构 if [];then elif[];then elif[];t ...

  4. [原创]UnLua Emmylua UE4开发环境搭建

    前言 公司开发的第二个虚幻4项目已经上线了,慢慢趋于稳定.回想起开荒的日子,历历在目.从引擎脚本的选择,各工具(导表,协议生成...)的重构.开发, 引擎扩展(多骨骼支持,Notify扩展,技能编辑器 ...

  5. c# .net 使用Confluent.Kafka针对kafka进行生产和消费

    首先说明一点,像Confluent.Kafka这种开源的组件,三天两头的更新.在搜索引擎搜索到的结果往往用不了,浪费时间.建议以后遇到类似的情况直接看官网给的Demo. 因为搜索引擎搜到的文章,作者基 ...

  6. Linux 就该这么学 CH09 使用ssh服务管理远程主机

    1 .配置网络服务 1)配置网络参数   五种配置网络的方法:命令行,编译网络配置文件,nmtui(旧版ui界面),nm-connection-edit(新版ui),VM虚拟机右上角图标等.  这里配 ...

  7. cad.net 定义lisp

    首先是传参型lisp的定义: (addLine (getpoint)) //定义lisp传入参数的例子 //复制到命令栏运行: (addLine (getpoint)) [LispFunction(& ...

  8. TP-LINK WR703N OpenWrt 无线配网历程

    ① 创建了两个 Interfaces,名字分别为 lan.wlan0 (可自行设定),一个负责连接 PPPoE,一个负责提供 AP 热点. ② 配置 wlan0 相关 ip 地址,该地址为无线网内网地 ...

  9. Linux基础(01)开发环境的搭建

    内核源码下载 : https://blog.csdn.net/u011375704/article/details/81866427 1.在虚拟机安装Ubuntu 14.04版本 (安装时设置好用户名 ...

  10. FPGA 开发板入手途径有哪些呢?

    买到一块 FPGA 开发板,你如何入手呢? 根据博主的经验,你可以通过如下途径来学习: 1.如果你是淘宝上买的,那么可以在淘宝上搜索你的开发板(一般 FPGA 开发板生厂商在淘宝上卖都会附带教程,如米 ...