usort sorting multiple fields

后端 未结 3 861
伪装坚强ぢ
伪装坚强ぢ 2020-12-13 04:00

Is it possible to use usort to sort multiple fields in a multidimensional array? For example, I want to sort name alphabetically and then from thos

3条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-13 04:49

    How about:

    $arr = Array (
        0 => Array (
            'name' => 'Jonah',
            'age' => '27',
        ),
        1 => Array (
            'name' => 'Bianca',
            'age' => '32',
        ),
        2 => Array (
            'name' => 'Jonah',
            'age' => '25',
        ),
        3 => Array (
            'name' => 'Bianca',
            'age' => '35',
        ),
    );
    function comp($a, $b) {
        if ($a['name'] == $b['name']) {
            return $a['age'] - $b['age'];
        }
        return strcmp($a['name'], $b['name']);
    }
    
    usort($arr, 'comp');
    print_r($arr);
    

    output:

    Array
    (
        [0] => Array
            (
                [name] => Bianca
                [age] => 32
            )
    
        [1] => Array
            (
                [name] => Bianca
                [age] => 35
            )
    
        [2] => Array
            (
                [name] => Jonah
                [age] => 25
            )
    
        [3] => Array
            (
                [name] => Jonah
                [age] => 27
            )
    
    )
    

提交回复
热议问题