PHP:按2个值排序数组

时间:2014-12-21 12:02:05

标签: php arrays

示例数组:

$ratings[] = array("8.25", "7", "john");
$ratings[] = array("8", "7", "kent");
$ratings[] = array("9", "7", "broman");
$ratings[] = array("9", "9", "yodude");
$ratings[] = array("10", "4", "anotherman");

我需要按第一个值降序排序此数组,如果第一个值相等,则需要降序第二个值。

有序数组应如下所示:

$ratings[] = array("10", "4", "anotherman");
$ratings[] = array("9", "9", "yodude");
$ratings[] = array("9", "7", "broman");
$ratings[] = array("8.25", "7", "john");
$ratings[] = array("8", "7", "kent");

你会怎么做呢?我猜测有一种更好的方法,而不是两次循环。

1 个答案:

答案 0 :(得分:0)

好的,uasort是要走的路。 这就是我解决它的方法:

uasort($ratings, function ($a, $b) {
    if ($a[0] == $b[0]) {
        if ($a[1] == $b[1]) {
            return 0;
        }
        return $a[1] > $b[1] ? -1 : 1;
    }
    return ($a > $b) ? -1 : 1;
});

有些人认为使用array_multisort()

更好