-4

我有一个如下所示的数组数据:

$data = array (
    array("a",2),
    array("b",1),
    array("a",1),
    array("b",3),
    array("c",1),
    array("b",2),
    array("c",2)
);

如何将数组排序为这样:

$data = array ( 
     array("a",1), 
     array("a",2), 
     array("b",1), 
     array("b",2), 
     array("b",3), 
     array("c",1), 
     array("c",2) 
); 
4

1 回答 1

0

在 php 中,您可以使用带有回调函数的 usort 函数callback(mixed $a, mixed $b) : int

<?php

usort($data, function($a1, $a2) {
    if($a1[0] == $a2[0]) {
        return $a1[1] >= $a2[1] ? 1 : -1;
    } elseif($a1[0] > $a2[0]) {
        return 1;
    } else {
        return -1;
    }
});

?>

输入数组:

$data = array (
    array("a",2),
    array("b",1),
    array("a",1),
    array("b",3),
    array("c",1),
    array("b",2),
    array("c",2)
);

输出数组:

array ( 0 => array ( 0 => 'a', 1 => 1, ), 1 => array ( 0 => 'a', 1 => 2, ), 2 => array ( 0 => 'b', 1 => 1, ), 3 => array ( 0 => 'b', 1 => 2, ), 4 => array ( 0 => 'b', 1 => 3, ), 5 => array ( 0 => 'c', 1 => 1, ), 6 => array ( 0 => 'c', 1 => 2, ), );
于 2021-04-13T18:33:24.473 回答