二维数组:$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. Python模块 --- 最高级别程序组织单元

    模块 --- 最高级别程序组织单元 <Python学习手册>笔记 import 导入1个模块 from 获取模块指定变量名 imp.reload 重新载入模块文件代码的方法 模块作用 代码 ...

  2. 请写出jQuery绑定事件的方法,不少于两种

    bind on live one 简写事件:click.hover.mousemove.mouseup.mousedown……

  3. 【转】Redis为什么用跳表而不用平衡树?

    Redis里面使用skiplist是为了实现sorted set这种对外的数据结构.sorted set提供的操作非常丰富,可以满足非常多的应用场景.这也意味着,sorted set相对来说实现比较复 ...

  4. js中的new操作符解析

    new 操作符做了以下事情: 1.创建一个对象,将对象赋值给this function Person(name, age) { console.log(this) //Person {} } let ...

  5. git提交代码时出现was rejected by remote错误

    git常见问题 git是大家在公司基本都项目管理工具,有一次在改了一个bug提交远程提交就出现问题了. 解决方案 首先这个是远程提交的时候被项目权限拦截掉了,一般在我们都用配置ssh公钥的方式操作,那 ...

  6. Chrome崩溃的解决办法

    前两天Win10 更新的安全组件,第二天上班来就打开不了Chrome了,打开就是:噢哟,崩溃了! 那是连 setting 页都打不开的啊...好晕,好晕. 我是真的有点崩溃啊,在网上找了好久,什么与百 ...

  7. nginx1.16+php7.39配置笔记

    vim /etc/nginx/conf.d/default.conf 修改php相关配置如下: location ~ \.php$ {        root           /usr/share ...

  8. 数据结构与算法系列——排序(4)_Shell希尔排序

    1. 工作原理(定义) 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本.但希尔排序是非稳定排序算法. 希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入 ...

  9. ElasticSearch 线程池类型分析之 ResizableBlockingQueue

    ElasticSearch 线程池类型分析之 ResizableBlockingQueue 在上一篇文章 ElasticSearch 线程池类型分析之 ExecutorScalingQueue的末尾, ...

  10. memcpy() 实现循环缓冲区数据的读写

    使用memcpy()函数做循环缓冲区的读写 首先对mencpy函数做个简单的介绍 下面是 memcpy() 函数的声明 void *memcpy(void *str1, const void *str ...