PHP多维数组查找最大重复数

PHP多维数组查找最大重复数,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组,我希望找到key=>值的最大值,但只找到重复的特定键,并创建一个具有该最大值的新key=>值 通过显示初始数组和预期结果更容易解释 $data = array( 0 => array('id' => '1a','info'=>'abc','level'=>1), 1 => array('id' => '1a','info'=>'xyz','level'=>3), 2 => array('id' => '2b','

我有一个多维数组,我希望找到key=>值的最大值,但只找到重复的特定键,并创建一个具有该最大值的新key=>值

通过显示初始数组和预期结果更容易解释

$data = array(
 0 => array('id' => '1a','info'=>'abc','level'=>1),
 1 => array('id' => '1a','info'=>'xyz','level'=>3),
 2 => array('id' => '2b','info'=>'uvw','level'=>2),
 3 => array('id' => '3c','info'=>'str','level'=>1),
 4 => array('id' => '3c','info'=>'str2','level'=>2),
 5 => array('id' => '4d','info'=>'uvw1','level'=>1),
);



$result = array(
  0 => array('id' => '1a','info'=>'abc','level'=>1,'max_level'=>3),
  1 => array('id' => '1a','info'=>'xyz','level'=>3,'max_level'=>3),
  2 => array('id' => '2b','info'=>'uvw','level'=>2,'max_level'=>2),
  3 => array('id' => '3c','info'=>'str','level'=>1,'max_level'=>2),
  4 => array('id' => '3c','info'=>'str2','level'=>2,'max_level'=>2),
  5 => array('id' => '4d','info'=>'uvw1','level'=>1,'max_level'=>1),
);

我已经研究过如何找到重复的“id”和最大的“level”值,但我无法将这两个值组合在一起并保留非重复值

因此,您的任务分为两部分:

// first - find maximum level of every `id`
$max_values = array();
foreach ($data as $v) {
    if (!isset($max_values[$v['id']]) || $max_values[$v['id']] < $v['level']) {
        $max_values[$v['id']] = $v['level'];
    }
}

// second - add this level to $data
foreach ($data as &$v) {
    $v['max_level'] = $max_values[$v['id']];
}
//首先-查找每个`id的最大级别`
$max_values=array();
foreach($v数据){
如果(!isset($max_values[$v['id']])| |$max_values[$v['id']]]<$v['level']){
$max_值[$v['id']]=$v['level'];
}
}
//第二-将此级别添加到$data
foreach($data as&$v){
$v['max_level']=$max_值[$v['id'];
}

使用
array\u walk
max
功能的解决方案:

array_walk($data, function($v) use(&$max_levels){ $max_levels[$v['id']][] = $v['level']; });
foreach ($data as &$v) {
    $v['max_level'] = max($max_levels[$v['id']]);    
}

print_r($data);

那么,你试过什么吗?谢谢!这是我被卡在上面的一个数组。