搜索

首页  >  问答  >  正文

PHP 判断二维数组是否再存相同的值?

  1. 根据多个key判断数组是否相同

  2. 相同的行,各个值进行相加

  3. 这是我的想法, 把key拼接起来当做一个key,然后就可以想只根据一个key这样去判断?大家还有没有其他的方法?

<?php

$test = [
    [
        'name' : 'a',
        'age' : 12,
        'number' : 11,
        'score' : 50,
    ],
    [
        'name' : 'a',
        'age' : 12,
        'number' : 11,
        'score' : 30,
    ],
    [
        'name' : 'b',
        'age' : 12,
        'number' : 12,
        'score' : 50,
    ],
]

例如这样的数组, 根据 name number age 确认是否重复,如果重复则把score相加.

过去多啦不再A梦过去多啦不再A梦2784 天前712

全部回复(2)我来回复

  • 滿天的星座

    滿天的星座2017-05-27 17:45:19

    谢邀!

        <?php
    
        $test = [
            [
                'name'   => 'a',
                'age'    => 12,
                'number' => 11,
                'score'  => 50,
            ],
            [
                'name'   => 'a',
                'age'    => 12,
                'number' => 11,
                'score'  => 30,
            ],
            [
                'name'   => 'b',
                'age'    => 12,
                'number' => 12,
                'score'  => 50,
            ]
        ];
        
        $arr = array();
        foreach($test as $val) {
            $key = $val['name'] . '-' . $val['age'] . '-' . $val['number'];
            $arr[$key]['name']    = $val['name'];
            $arr[$key]['age']     = $val['age'];
            $arr[$key]['number']  = $val['number'];
            $arr[$key]['score']  += $val['score'];
        }
        
        var_dump("<pre>", array_values($arr));die;

    回复
    0
  • 世界只因有你

    世界只因有你2017-05-27 17:45:19

    兄弟,给你写了个最简单的去重的方法,拿去用吧。

    function uniqueArr($arr){
        $returnArr=[];
        
        //分隔符
        $separator="~!#!!#~#!!";
        //排序
        sort($arr);
        
        //去重
        foreach($arr as $value){
            $k=$value['name'].$separator.$value['number'].$separator.$value['age'];
            $returnArr[$k]=[
                'name'=>$value['name'],
                'number'=>$value['number'],
                'age'=>$value['age']
            ];//这里是去重
            $returnArr[$k]['score']+=$value['score'];//这里是累加
        }
        return $returnArr;
    }

    回复
    0
  • 取消回复