使用数字和文本按值对关联数组进行排序

时间:2014-05-06 10:19:11

标签: php sorting multidimensional-array

我有一个包含键的标签数组,以及前一个数组中出现次数的值:

Array ( [789] => 1 [sss] => 2 [aaa] => 3 [bbb] => 1 [taf] => 1 )

现在我想按出现次数排序这个数组 我通过使用以下命令执行此操作:

array_multisort($array, SORT_DESC);

它有效,但由于某种原因它将键“789”的值更改为0,因此我得到以下输出:

Array ( [aaa] => 3 [sss] => 2 [taf] => 1 [0] => 1 [bbb] => 1 ) 

当我将789更改为789时,从数据库中检索值,它可以正常工作。 所以我认为排序出错了,因为789是一个数字。 有没有办法达到预期的效果? 我尝试将789转换为字符串但没有结果。

1 个答案:

答案 0 :(得分:0)

有一个特别用于此目的的功能(具有讽刺意味),在按降序排序时保留键,它被称为 arsort() ;

arsort($array);

输出

Array
(
    [aaa] => 3
    [sss] => 2
    [taf] => 1
    [789] => 1
    [bbb] => 1
)

<强> DEMO

array_multisort()中列出{{1}}的问题:

  

将保留关联(字符串)键,但数字键将是   重新索引。