PHP:从多维数组中获取最大值并获取具有最大值的数组

时间:2014-09-25 13:55:05

标签: php arrays

我有一个小问题。 我不知道该怎么做:

输入数据:

$data = [
    [
        'id' => 1,
        'name' => "Food",
        'wish_number' => 10,
        'price' => 1327242001.0,
    ],
    [
        'id' => 1,
        'name' => "Humanitary",
        'wish_number' => 13,
        'price' => 112459000.0,
    ]
];

我需要什么:

我需要带有max(wish_number)键值的返回数组。如果有2个或更多阵列具有相同的wish_number,我需要选择价格最高的阵列。

非常感谢你们。你真棒。

2 个答案:

答案 0 :(得分:1)

您可以使用array_multisort()执行此任务。例如:

$wish_number = array_map(function($col){
    return $col['wish_number'];
}, $data);

$price = array_map(function($col){
    return $col['price'];
}, $data);

array_multisort($data, SORT_DESC, $wish_number, SORT_DESC, $price);

echo '<pre>';
print_r($data);

$max = $data[0];

Sample Output

答案 1 :(得分:1)

我的例子

        usort($data, $this->usort_callback);
        $arr = array_slice($data, 0, 1);
  public function usort_callback($a, $b)
  {
        if ($a['wish_number'] == $b['wish_number']) {
            if ($a['price'] == $b['price']) {
                return ($a['last_added'] > $b['last_added']) ? -1 : 1;
            }else{
                return ($a['price'] > $b['price']) ? -1 : 1;
            }
        }

        return ( $a['wish_number'] > $b['wish_number'] ) ? -1 : 1;
    }

}