在不丢失键值的情况下对多维数组进行排序

时间:2015-05-12 12:31:19

标签: php multidimensional-array

我有这个数组。

Array
(
    [Abdominal ascitis] => 11
    [Infection (not neutropenic)] => 25
    [Nausea/Vomiting] => 8
    [Pain] => 17
    [Abdominal pain] => 18
    [Bowel obstruction] => 5
    [Back pain] => 3
    [Bleeding] => 12
    [Brain mets] => 8
    [Cerebral event] => 11
    [Chemotherapy toxicity] => 3
    [Neutropenic Sepsis] => 24
    [Constipation] => 1
    [Diarrhoea] => 3
    [Disease progression] => 3
    [SVCO] => 2
    [Shortness of breath] => 17
    [Disease related] => 2
    [Chest pain ] => 6
    [DVT] => 2
    [Falls] => 14
    [Hypercalcaemia] => 6
    [Jaundice] => 3
    [MSCC] => 9
    [New diagnosis] => 2
    [Other] => 11
    [Pleural effusion] => 8
    [Surgery related] => 1
    [Urinary tract infection] => 3
    [AKI] => 3
    [Dysphagia] => 4
    [Pulmonary Emboli] => 1
    [Biliary sepsis] => 1
)

我想按价值对其进行排序。

我尝试做过这样的事情,这种事情有效率为50%。

usort($tallyArray, function($a, $b) {
    return $a - $b;
});

但它抛弃了我的$ key标识符。

Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 1
    [4] => 2
    [5] => 2
    [6] => 2
    [7] => 2
    [8] => 3
    [9] => 3
    [10] => 3
    [11] => 3
    [12] => 3
    [13] => 3
    [14] => 3
    [15] => 4
    [16] => 5
    [17] => 6
    [18] => 6
    [19] => 8
    [20] => 8
    [21] => 8
    [22] => 9
    [23] => 11
    [24] => 11
    [25] => 11
    [26] => 12
    [27] => 14
    [28] => 17
    [29] => 17
    [30] => 18
    [31] => 24
    [32] => 25
)

有什么方法可以对它进行排序并保留$ key标识符吗?

2 个答案:

答案 0 :(得分:3)

我认为你要找的是asort()而不是usort()。这将维护关键索引,并按升序排序。

答案 1 :(得分:0)

对于你想要的排序asort()可以解决问题。 -

asort($tallyArray);
  

对数组进行排序并维护索引关联

asort()

DEMO