usort sorting multiple fields

后端 未结 3 867
伪装坚强ぢ
伪装坚强ぢ 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条回答
  •  猫巷女王i
    2020-12-13 04:53

    How about:

     getRandomName(), 'age' => rand(1,10), 'start_order' => $i);
    }
    $order = array('name' => 'desc', 'age' => 'asc');
    
    print_r($a);
    
    usort($a, function ($a, $b) use ($order) {
        $t = array(true => -1, false => 1);
        $r = true;
        $k = 1;
        foreach ($order as $key => $value) {
            $k = ($value === 'asc') ? 1 : -1;
            $r = ($a[$key] < $b[$key]);
            if ($a[$key] !== $b[$key]) {
                return $t[$r] * $k;
            }
    
        }
        return $t[$r] * $k;
    });
    
    print_r($a);
    

提交回复
热议问题