首页 >后端开发 >php教程 >如何分别按数值和键降序和升序对关联数组进行排序?

如何分别按数值和键降序和升序对关联数组进行排序?

Susan Sarandon
Susan Sarandon原创
2024-11-11 10:01:03283浏览

How to Sort an Associative Array by Numeric Value and Key in Descending and Ascending Order Respectively?

按数值和键进行关联数组排序

此编程困境涉及带有数值的关联数组,专门针对创建列表其中标签首先按出现次数降序排序,然后按字母升序排序

问题定义

考虑一个示例数组:

$arrTags = [
    'mango' => 2, 
    'orange' => 4, 
    'apple' => 2,
    'banana' => 3
];

此数组所需的输出是一个排序列表:

orange (4)  
banana (3) 
apple (2) 
mango (2)

原生 PHP 函数 arsort() 存在不足,因为它会优先考虑芒果而不是苹果,因为

解决方案

使用 array_keys() 和 array_values() 函数,可以更有效地解决这个问题。以下代码举例说明了解决方案:

array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);

这一行消除了对循环的需要,并通过首先使用 array_values() 将数组中的值提取到可排序数组中来完成必要的排序。随后,使用 SORT_DESC 将值按降序排序。同时,使用 array_keys() 提取相应的键,并使用 SORT_ASC 按升序排序。然后利用提供的 $arrTags 参数将结果重新组合到原始数组中。

以上是如何分别按数值和键降序和升序对关联数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn