为了账号安全,请及时绑定邮箱和手机立即绑定

如何从旧数组中按每个重复值的计数降序创建新数组

如何从旧数组中按每个重复值的计数降序创建新数组

PHP
偶然的你 2022-07-29 15:21:45
我想从一个旧数组中安排一个新数组,其中有多个值,其中也有重复值(在旧数组中)。所需的编码应如下所示like so$old_array = array("1", "2" ,"3", "1", "5", "2", "2", "3", "3", "3", "6");$new_array = array("3","2","1","5","6"); 新数组按值频率的降序排列。例如。“3”的计数为 4,“2”的计数为 3,“1”的计数为 2,依此类推
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

$old_array = array("1", "2" ,"3", "1", "5", "2", "2", "3", "3", "3", "6");          

$values = array_count_values( $old_array );             

arsort($values);            

$result = array_keys($values);

输出(对于 php 5.6.35):


$result = 

    array(

    (int) 0 => (int) 3,

    (int) 1 => (int) 2,

    (int) 2 => (int) 1,

    (int) 3 => (int) 6,

    (int) 4 => (int) 5

)


查看完整回答
反对 回复 2022-07-29
?
千万里不及你

TA贡献1784条经验 获得超9个赞

一种选择是使用array_count_values,然后使用uksort根据原始数组中的值对键进行排序。


排序后,取array_keys。


$old_array = array("1", "2" ,"3", "1", "5", "2", "2", "3", "3", "3", "6");

$result = array_count_values($old_array);

uksort($result, function($a, $b) use ($result){

    return $result[$a] < $result[$b];

});

$new_array = array_keys($result);

print_r($new_array);

输出


Array

(

    [0] => 3

    [1] => 2

    [2] => 1

    [3] => 5

    [4] => 6

)


查看完整回答
反对 回复 2022-07-29
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信