搜尋

首頁  >  問答  >  主體

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梦2799 天前715

全部回覆(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
  • 取消回覆