我有以下数组(从php中的json解码):
array [
array("num"=>1,"test"=123, "key"=4),
array("num"=>2,"test"=123, "key"=3),
array("num"=>3,"test"=124, "key"=2),
array("num"=>4,"test"=125, "key"=7),
array("num"=>5,"test"=125, "key"=8),
array("num"=>6,"test"=123, "key"=5)
]
我想计算"测试"键并使用相同的键返回所有相关的数组: 123在数组中具有最多的外观
所以我想获得以下结果(最常出现的数组列表):
array[
array("num1"=1 , "test"=123","key" = 4)
array("num1"=2 , "test"=123", "key" = 3)
array("num1"=6 , "test"=123" ,"key" = 5)
]
然后(如果可能的话,当然可以在同一个循环中完成)从该列表开始,我想用最高的密钥:
array("num1"=6 , "test"=123" ,"key" = 5)
我怎么能以最好的方式在PHP中做到这一点? 非常感谢
答案 0 :(得分:0)
这样的事情可能有用, 所有函数都在PHP.net上有很好的解释
<?php
$keyCounts = array_count_values( array_column( $arr, 'test' ));
$maxs = array_keys($arr, max($keyCounts ));
$filtered = array_filter($arr , function($row) {
return $row['test'] === $maxs;
});
$filteredMax = max(array_column( $filtered , 'key' );
$final = array_filter($filtered , function($row) {
return $row['key'] === $filteredMax;
});
编辑: 这段代码不太可能有效,但它应该指向正确的方向和正确的函数来自己找到正确的解决方案。