二维数组:$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. ESA2GJK1DH1K升级篇: 远程升级准备工作: 安装Web服务器

    前言 大家可以安装Apache,Tomcat,nginx 等Web服务器软件,这篇文章安装 OpenResty 作为Web服务器软件,该软件安装在云端电脑,如果想 安装到自己本地电脑实现该功能,可使用 ...

  2. redis 键值对 有效期设置

    redis 键值对 有效期设置redis中可以使用expire命令设置一个键的生存时间, 到时间后redis会自动删除它<-----> 类比于javaweb系统临时数据 过期删除功能 ex ...

  3. SpringBoot整合MyBatis与MySql8.0

    一.前言 之前已经有一篇文章讨论过SpringBoot整合MyBatis,因而此篇不在重复累赘,本文主要是最新版的SpringBoot2.0与MyBatis.最新MySQL8.0整合过程中遇到的问题进 ...

  4. Kubernetes之Taints与Tolerations 污点和容忍

    NodeAffinity节点亲和性,是Pod上定义的一种属性,使Pod能够按我们的要求调度到某个Node上,而Taints则恰恰相反,它可以让Node拒绝运行Pod,甚至驱逐Pod. Taints(污 ...

  5. linux 手动源码安装lnmp(亲测)

    linux 手动源码安装lnmp笔记(亲测)<pre>先安装这2个yum install gccyum install g++</pre><pre>先在linux ...

  6. HTTP漫谈

    一.说明 1.1 当前背景说明 很多web的书包括web安全的书都会有一章介绍http协议,我就总恶意揣测作者是在凑字数,一般都直接跳过去. 相比TCP/IP这种各字段基于数值代号的协议,http这种 ...

  7. 第十六节:Asp.Net Core中Session的使用、扩展、进程外Session

    一. 简介 关于Session的原理可参照Asp.Net版本Session的文章,去查阅. 1. 普通用法 (1).通过Nuget引入[Microsoft.AspNetCore.Http]程序集,Co ...

  8. C++引用与常量

    常量: 在C++中有许多种数据类型(如int,float,bool等等).而这些数据类型又可以声明定义出变量与常量两种不同的具体数据.它们两种分类的标准是不一样的,是两个角度可以叠加的分类,举个栗子: ...

  9. python docker api

    开启Remote API docker默认是没有开启Remote API的,需要我们手动开启.编辑/lib/systemd/system/docker.service文件, 在文件里的ExecStar ...

  10. Python协程介绍(转)

    原文:https://www.liaoxuefeng.com/wiki/897692888725344/923057403198272 协程,又称微线程,纤程.英文名Coroutine. 协程的概念很 ...