【问题标题】:sort results of array count values into a new array将数组计数值的结果排序到一个新数组中
【发布时间】:2014-03-17 20:08:12
【问题描述】:

我想将结果排序到一个新数组但没有 $key 所以最不唯一的数字将排在第一位(或重复次数最多的数字将排在第一位)。

<?php

$a = array (1,1,2,2,2,3,3,3,3,4,4,4,4,4,5);

foreach (array_count_values($a) as $key => $value) {
        echo $key.' - '.$value.'<br>'; 
}

//I am expecting to get the most duplicated number FIRST (without the $key)
//so in that case :
// $newarray = array(4,3,2,1,5); 
?>

【问题讨论】:

  • 你说的没有$key是什么意思? 4、3、2、1、5是新数组的键吗?
  • iow... 新数组的结果将是: $newarray = array(4,3,2,1,5);谢谢!

标签: php arrays sorting count duplicates


【解决方案1】:
$a = array (1,1,2,2,2,3,3,3,3,4,4,4,4,4,5);

$totals = array_count_values($a);

arsort( $totals );

echo "<pre>";
print_r($totals);

输出

Array
(
    [4] => 5
    [3] => 4
    [2] => 3
    [1] => 2
    [5] => 1
)

【讨论】:

  • 这是可行的,但我想知道是否有更短的方法:)
  • 这样更好吗?也许排序可以在同一行中完成..不确定。
  • @user3301364,我的 +1 这是最短的方法!
【解决方案2】:

这样做

<?php
$a = array (1,1,2,2,2,3,3,3,3,4,4,4,4,4,5,6,7,8,9);
$n=array_count_values($a);
arsort($n);
print_r(array_keys($n));

Demo

输出

   Array
(
    [0] => 4
    [1] => 3
    [2] => 2
    [3] => 1
    [4] => 9
    [5] => 8
    [6] => 5
    [7] => 6
    [8] => 7
)

【讨论】:

  • // 替换到该行 // $a = array (1,1,2,2,2,3,3,3,3,4,4,4,4,4,5 ,6,7,8,9); // 我没有得到 7,8,9 的值
  • @user3301364 您可以在 Nambi 提供的 Demo 链接中尝试您的输入。
  • @user3301364 感谢您的建议,我已经编辑了我的答案
【解决方案3】:
$newarray = array_keys(array_count_values($a));

【讨论】:

  • $a = 数组 (1,1,2,2,2,3,3,3,3,4,4,4,4,4,5); foreach (array_keys(array_count_values($a)) as $key => $value) { echo $value.'
    '; } // 这不是我期望得到的 0 1 2 3 4
  • 你希望新数组不打印出来;-D
猜你喜欢
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
相关资源
最近更新 更多