2017-02-14 2 views
-1

У меня есть массив массивов.Как отсортировать массив массивов по значениям?

$array = array(
    ['mb_id':'chris','mb_lv':1,'mb_point':150], 
    ['mb_id':'chrit','mb_lv':1,'mb_point':160], 
    ['mb_id':'chras','mb_lv':3,'mb_point':170], 
    ['mb_id':'chrus','mb_lv':1,'mb_point':180] 
) 

Как я могу отсортировать значения по mb_lv возрастанию, mb_point Asc, mb_id Asc? Я пробовал array_multisort(), но в итоге я перепутал данные.

+3

Возможный дубликат [Как я могу сортировать массивы и данные в PHP?] (Http://stackoverflow.com/questions/17364127/how-can-i-sort-arrays-and-data-in-php) – Tobias

ответ

0

Дайте ему попробовать,

function array_orderby() 
{ 
    $args = func_get_args(); 
    $data = array_shift($args); 
    foreach ($args as $n => $field) { 
     if (is_string($field)) { 
      $tmp = array(); 
      foreach ($data as $key => $row) 
       $tmp[$key] = $row[$field]; 
      $args[$n] = $tmp; 
      } 
    } 
    $args[] = &$data; 
    call_user_func_array('array_multisort', $args); 
    return array_pop($args); 
} 


$sorted = array_orderby($array, 'mb_lv', SORT_DESC, 'mb_point', SORT_ASC,'mb_id',SORT_ASC); 

Дайте ему попробовать, он должен работать.

Здесь работает код link

0
$array = [ 
    ['mb_id' => 'chris','mb_lv' => 1,'mb_point' => 150], 
    ['mb_id' => 'chrit','mb_lv' => 1,'mb_point' => 160], 
    ['mb_id' => 'chras','mb_lv' => 3,'mb_point' => 170], 
    ['mb_id' => 'chrus','mb_lv' => 1,'mb_point' => 180] 
]; 

usort($array, function ($a, $b){ 
    return ($a['mb_lv'] < $b['mb_lv']) ? -1 : 1; 
}); 

var_dump ($ массив);

Смежные вопросы