php - 根据重复元素的数量对PHP中的多维关联数组进行排序/限制

标签 php

我在 PHP 中有一个多维数组,如下所示:

$array = Array ( 
        [0] => Array ( [bill] => 1 ) 
        [1] => Array ( [bill] => 1 ) 
        [2] => Array ( [bill] => 1 ) 
        [3] => Array ( [bill] => 1 )        
        [4] => Array ( [jack] => 5 ) 
        [5] => Array ( [jack] => 5 ) 
        [6] => Array ( [jake] => 6 ) 
        [7] => Array ( [jake] => 6 ) 
        [8] => Array ( [jake] => 6 ) 
        [9] => Array ( [jake] => 6 ) 
        [10] => Array ( [sara] => 7 ) 
        [11] => Array ( [sara] => 7 ) 
        [12] => Array ( [sara] => 7 ) 
        [13] => Array ( [sara] => 7 ) 
        [14] => Array ( [william] => 8 ) 
        [15] => Array ( [william] => 8 ) 
        [16] => Array ( [william] => 8 ) 
        [17] => Array ( [william] => 8 ) 
        [19] => Array ( [william] => 8 ) 
        [20] => Array ( [martin] => 9 ) 
        [21] => Array ( [martin] => 9 ) 
        [22] => Array ( [martin] => 9 ) 
        [23] => Array ( [tara] => 10 ) 
        [24] => Array ( [tara] => 10 ) 
        [25] => Array ( [tara] => 10 )              
        [26] => Array ( [tara] => 10 )              
      );

我想将 $array 转换为 $result 以便它可以先根据相似元素的数量对数组进行排序,然后返回前五个值。例如,$array有五个相似的[william] => 8,四个相似的[bill] => 1,四个相似的[jake] => 6,四个相似[sara] => 7,四个相似[tara] => 10,三个相似[ martin] => 9$array 变量中的两个类似的 [jack] => 5。因此,具有前五个最重复元素的 $result 变量应如下所示:

$result = Array (
        [0] => Array ( [william] => 8 ) 
        [1] => Array ( [bill] => 1 ) 
        [2] => Array ( [jake] => 6 ) 
        [3] => Array ( [sara] => 7 ) 
        [4] => Array ( [tara] => 10 ) 
      );

你能帮我解决这个问题吗?

最佳答案

创建一个组合键和值的新数组,并使用 array_count_values 计算出现的次数。最后排序并检索前 5 名。

$new = array();      

foreach($array as $key => $value) {
    $new[] = key($value) . '_' . current($value);
}

$counts = array_count_values($new);
arsort($counts);
$results = array();

foreach(array_splice($counts,0,5) as $key => $count) {
    $key = explode('_',$key);
    $results[] = array($key[0] => $key[1]);
}

print_r($results);

关于php - 根据重复元素的数量对PHP中的多维关联数组进行排序/限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600468/

相关文章:

php - 有没有一种方法可以将对各种 PHP 函数的调用存储在 MySQL 数据库中,而不会有使用 eval() 的风险?

php - Laravel 5 Socialite Facebook 登录用户取消应用程序请求后回调处理错误

php - 如何从基于其他行和列值的列中选择一个值?

php - 在 PHP 或 Python 中从 HTML 中提取数据

php - PHP var_dump(array());返回array(0){} array(0){}

php soap :ServerServer was unable to process request. ---> 序列不包含任何元素

javascript - Codeigniter Ajax 发布 : Always Return Same Data

php - 使用 psql 插入到 postgres 数据库时的特殊字符

javascript - 未捕获的 TypeError 无法读取 null 的属性 "checked"

用于基本 CRUD 的 PHP 快速骨架生成器?