使用usort在PHP中对关联数组进行排序

时间:2018-04-01 19:00:06

标签: php arrays sorting

我试图像这样对我的关联数组进行排序:

[
  "key_a" => ["avg" => 2]
  "key_b" => ["avg" => 3]
  "key_c" => ["avg" => 0]
]

我想按平均排序,所以我应该得到类似的东西

[
  "key_b" => ["avg" => 3]
  "key_a" => ["avg" => 2]
  "key_c" => ["avg" => 0]
]

所以我决定使用usort,但它会改变我的密钥数量,我该如何解决?

这是我的代码:

usort($materials, function($a, $b) {
    if ( $a["avg"] == $b["avg"] ) {
        return 0;
    }
    return ($a["avg"] < $b["avg"]) ? -1 : 1;
});

然后,如果我打印数组,我会得到类似的东西:

[
  "0" => ["avg" => 3]
  "1" => ["avg" => 2]
  "2" => ["avg" => 0]
]

1 个答案:

答案 0 :(得分:1)

尝试改为使用the uasort() function

  

此函数使用用户定义的比较函数对数组进行排序,使数组索引与它们关联的数组元素保持相关性。