Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据频率对数组中的元素进行排序 我在一个项目的中间面对这种排列。我希望根据ID频率对其进行排序,这意味着哪个ID重复最多,必须作为结果数组的第一个元素。怎么做_Php_Arrays_Multidimensional Array - Fatal编程技术网

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开始。。你能帮忙吗?