2017-02-14 25 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 ASC、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($配列)に取り組んでいます。

関連する問題