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
数组中还有其他值吗?酷。我已经更新了答案,这样任何看到问题但没有阅读评论的人都可以得到这两种解决方案。