按数值和键进行关联数组排序
此编程困境涉及带有数值的关联数组,专门针对创建列表其中标签首先按出现次数降序排序,然后按字母升序排序
问题定义
考虑一个示例数组:
$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中文网其他相关文章!