Php 根据频率对数组中的元素进行排序 我在一个项目的中间面对这种排列。我希望根据ID频率对其进行排序,这意味着哪个ID重复最多,必须作为结果数组的第一个元素。怎么做
提前谢谢你的帮助Php 根据频率对数组中的元素进行排序 我在一个项目的中间面对这种排列。我希望根据ID频率对其进行排序,这意味着哪个ID重复最多,必须作为结果数组的第一个元素。怎么做,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,提前谢谢你的帮助 Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 4 ) [2] => Array ( [id] => 3 ) [3] => Array ( [id] => 4 ) [4] => Array
Array
(
[0] => Array
(
[id] => 1
)
[1] => Array
(
[id] => 4
)
[2] => Array
(
[id] => 3
)
[3] => Array
(
[id] => 4
)
[4] => Array
(
[id] => 1
)
[5] => Array
(
[id] => 4
)
[6] => Array
(
[id] => 7
)
)
如果上面的数组是您的结构,那么类似这样的东西将为您提供一个窍门,用它的相关计数组织
id
:
$filtered = array_count_values(array_column($myArray, 'id'));
// now sort it: high - low
arsort($filtered);
这将产生以下数组:
Array (
[4] => 3
[1] => 2
[3] => 1
[7] => 1
)
上面的键是id
列,值是它在初始数组中出现的次数
我的问题是;您需要它的原始格式、刚刚订购的还是上面的频率显示足够?如果上面的数组是您的结构,那么像这样的方法可以帮助您组织
id
及其相关计数:
$filtered = array_count_values(array_column($myArray, 'id'));
// now sort it: high - low
arsort($filtered);
这将产生以下数组:
Array (
[4] => 3
[1] => 2
[3] => 1
[7] => 1
)
上面的键是id
列,值是它在初始数组中出现的次数
我的问题是;您需要它的原始格式、刚刚订购的格式,还是上面的频率显示就足够了?您想在输出中重复吗?e、 g.{4,4,4,3,3,2}?@EricM。我想要一个基于重复的数组。。就像第一个元素是4,因为它重复最多,第二个元素是3,第三个元素是2,依此类推,请参见darrens方法,它的工作原理:)您想在输出中重复吗?e、 g.{4,4,4,3,3,2}?@EricM。我想要一个基于重复的数组。。就像第一个元素是4,因为它重复的次数最多,第二个元素是3,第三个元素是2,依此类推,请看darrens方法,它工作得很好:)现在如果我需要访问前2个id,这里是4,1该怎么办???@beingbishwa或者运行一个循环
foreach($key=>count)
(使用$key
,就是你想要的),或者如果您想要前2个,只需$top2=array\u切片(array\u key($filtered),0,2即可代码>最后一个问题,如果我想得到这样的结果:数组([1]=>4,[2]=>1,[3]=>1)等等..这样我将把键设为1,2,3,4,5,值是重复次数最多的order@beingbishwa你这样说是什么意思?你想让钥匙从1开始而不是从0开始?哦,对不起。。。当然,我希望密钥从0开始。。你能帮我吗?现在如果我需要访问前2个id,这里是4,1该怎么办?@beingbishwa要么运行一个循环foreach($key=>$count)
(使用$key
,就是你想要的),要么如果你想要前2个,只需$top2=array\u切片(array\u keys($filtered),0,2)代码>最后一个问题,如果我想得到这样的结果:数组([1]=>4,[2]=>1,[3]=>1)等等..这样我将把键设为1,2,3,4,5,值是重复次数最多的order@beingbishwa你这样说是什么意思?你想让钥匙从1开始而不是从0开始?哦,对不起。。。当然,我希望密钥从0开始。。你能帮忙吗?