一种方法是计算最大fruits 值(这可以使用array_column 来提取值)然后遍历数组,当水果为最大值时推送键/水果对:
$data = ['data' => [
'tree1' => ['fruits' => 20],
'tree2' => ['fruits' => 15],
'tree3' => ['fruits' => 20],
'tree4' => ['fruits' => 17]
]];
$max_fruit = max(array_column($data['data'], 'fruits'));
$output = array();
foreach ($data['data'] as $key => $value) {
if ($value['fruits'] == $max_fruit) {
$output[$key] = $max_fruit;
}
}
print_r($output);
输出
Array
(
[tree1] => 20
[tree3] => 20
)
Demo on 3v4l.org
对于$data 具有多组具有不同键的树数据的情况,您需要遍历每组数据,首先生成$max_fruit 值(array_map 对此很有用),然后使用嵌套的foreach 来获取匹配值:
$data = ['data1' => [
'tree1' => ['fruits' => 20],
'tree2' => ['fruits' => 15],
'tree3' => ['fruits' => 20],
'tree4' => ['fruits' => 17]
],
'data2' => [
'tree5' => ['fruits' => 20],
'tree6' => ['fruits' => 11],
'tree7' => ['fruits' => 13],
'tree8' => ['fruits' => 17]
]];
$max_fruit = max(array_map(function ($d) { return max(array_column($d, 'fruits')); }, $data));
$output = array();
foreach ($data as $set) {
foreach ($set as $key => $value) {
if ($value['fruits'] == $max_fruit) {
$output[$key] = $max_fruit;
}
}
}
print_r($output);
在这种情况下,输出是:
Array
(
[tree1] => 20
[tree3] => 20
[tree5] => 20
)
Demo on 3v4l.org