【问题标题】:How to order a php array based on duplicate values如何根据重复值对 php 数组进行排序
【发布时间】:2016-11-18 01:33:03
【问题描述】:

我需要按重复值的数量对数组进行排序。

这是一个例子:

$arr = array(
    1=> 'Love is true',
    2=> 'Love is true',
    3=> 'Hello Word',
    4=> 'Hello Word',
    5=> 'Hope',
    6=> 'Hope',
    7=> 'Love is true',
    8=> 'Hello Word',
    9=> 'Hello Word',
    10=>'Hope',
    11=>'Hello Word',
    12=>'Hope',
    13=>'Hello Word',
    14=>'Hello Word',
    15=>'Hello Word');
print_r($arr);

在这个数组中,我们可以看到

爱是真的 > 重复 > 3x 你好字 > 重复 > 8x 希望 > 重复 > 4x

我希望排序将重复次数最多的值放在首位:

Hello Word 位置 1# 在数组中(重复 8 次) Hope 2# 在数组中(重复 4 次) Love is true 3# in array(重复3次)

所以它返回这个数组:

Array
(
    [0] => Hello Word
    [1] => Hope 
    [2] =  Love is true
)

【问题讨论】:

  • 问题出在哪里,你卡在哪里了?
  • 数组函数咒语比赛开始哈哈:D array_count_values + arsort + array_keys
  • @Ghost,那是nice solution,你是要发布还是我可以? *-*
  • @FirstOne 没有问题,你的解决方案太过分了:D 保持一维
  • gracias listo solucionado

标签: php arrays arraylist multidimensional-array


【解决方案1】:

你可以这样做:

$count = array_count_values($arr); // count each repetition
arsort($count); // sort the values
$array = array_keys($count); // get the expected array
print_r($array);

这将输出:

Array
(
    [0] => Hello Word
    [1] => Hope
    [2] => Love is true
)

看到它在行动here


您可以在下面获得此答案中使用的函数的一些参考:

  • array_count_values统计一个数组的所有值
  • asort对数组进行排序并保持索引关联
  • array_keys返回数组的所有键或键的子集


您可以var_dump 流程的每个步骤来查看发生了什么。

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
猜你喜欢
  • 2011-10-28
  • 2017-06-07
  • 2017-08-11
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 2013-03-06
  • 2017-09-15
相关资源
最近更新 更多