Php 从多维数组中获取多个最大键vs值的数组

Php 从多维数组中获取多个最大键vs值的数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组,如下所示: $data = ['data' => [ 'tree1' => ['fruits' => 20], 'tree2' => ['fruits' => 15], 'tree3' => ['fruits' => 20], 'tree4' => ['fruits' => 17] ]]; array( 'tree1' => 20, 'tree3' =>

我有一个多维数组,如下所示:

$data = ['data' => [
     'tree1' => ['fruits' => 20],
     'tree2' => ['fruits' => 15],
     'tree3' => ['fruits' => 20],
     'tree4' => ['fruits' => 17]
]];
array(
    'tree1' => 20,
    'tree3' => 20,
)
如何使用键和值获取最大
结果
值的数组,如下所示:

$data = ['data' => [
     'tree1' => ['fruits' => 20],
     'tree2' => ['fruits' => 15],
     'tree3' => ['fruits' => 20],
     'tree4' => ['fruits' => 17]
]];
array(
    'tree1' => 20,
    'tree3' => 20,
)
目前,我正在使用自定义循环和
If-Else
语句提取此数组


有没有更好的方法可以使用PHP提取这样的数组?

一种方法是计算最大的
结果值(可以使用来提取值),然后在数组上迭代,当结果最大时按下键/结果对:

$data=['data'=>[
'树1'=>20],
'树2'=>15],
'树3'=>20],
'树4'=>17]
]];
$max_fruit=max(数组_列($data['data'],'fruits');
$output=array();
foreach($data['data']作为$key=>$value){
如果($value['fruits']=$max\u fruit){
$output[$key]=$max\u水果;
}
}
打印(输出);
输出

Array
(
    [tree1] => 20
    [tree3] => 20
)

对于
$data
具有多组具有不同键的树数据的情况,您需要迭代每个树数据集,首先生成
$max\u fruit
值(这很好),然后使用嵌套的
foreach
获取匹配值:

$data=['data1'=>[
'树1'=>20],
'树2'=>15],
'树3'=>20],
'树4'=>17]
],
“数据2”=>[
'tree5'=>20],
'树6'=>11],
'树7'=>13],
'树8'=>17]
]];
$max_fruit=max(数组_映射(函数($d){返回max(数组_列($d,'fruits');},$data));
$output=array();
foreach($数据作为$set){
foreach($设置为$key=>$value){
如果($value['fruits']=$max\u fruit){
$output[$key]=$max\u水果;
}
}
}
打印(输出);
在这种情况下,输出为:

Array
(
    [tree1] => 20
    [tree3] => 20
    [tree5] => 20
)

成功了,谢谢@Nick@LuFFy不用担心-我很高兴能帮上忙我还有一个问题,如果结构不是
数据
,而是
数组('data1'=>数组,'data2'=>数组)
?那么
$data
中有多个
数据
数组,它们都有树吗?
$data
数组中还有其他值吗?酷。我已经更新了答案,这样任何看到问题但没有阅读评论的人都可以得到这两种解决方案。