如何在数组中的相同键中获取最大值

时间:2017-03-23 12:26:57

标签: php arrays sorting multidimensional-array max

如何获取数组中相同键的最大值

E.x

我有这个数组。

Array
(
    [id] => 1
    [amount] => 4
)
Array
(
    [id] => 1
    [amount] => 3
)
Array
(
    [id] => 2
    [amount] => 3
)

我想要下面的结果。意味着我想要相同id的最大金额值。请为此提供解决方案。

Array
(
    [id] => 1
    [amount] => 4
)
Array
(
    [id] => 2
    [amount] => 3
)

2 个答案:

答案 0 :(得分:1)

您可以先使用usort按最高金额对数组进行排序,然后再返回第一个结果。例如:

usort($theBigArray, function($a, $b) {
    return ($a['amount'] - $b['amount']);
});

print_r($theBigArray);

答案 1 :(得分:1)

<?php
    $bigArray = [
        [
            'id' => 1,
            'amount' => 4
        ],
        [
            'id' => 1,
            'amount' => 3
        ],
        [
            'id' => 2,
            'amount' => 3
        ]
    ];


    $output = [];

    foreach($bigArray as $innerArray){
        if(!isset($output[$innerArray['id']])){
            $output[$innerArray['id']] = $innerArray;
        }
        elseif( $output[$innerArray['id']]['amount'] < $innerArray['amount'] ){
            $output[$innerArray['id']] = $innerArray;
        }
    }

    print_r($output);
    exit;