2017-04-25 122 views
1

排序多維數組使用鍵排序多維數組

$list = array_sort($list, 'name', SORT_ASC); 
function array_sort($array, $on, $order = SORT_ASC) 
{ 
    $new_array  = array(); 
    $sortable_array = array(); 
    if (count($array) > 0) { 
     foreach ($array as $k => $v) { 
      if (is_array($v)) { 
       foreach ($v as $k2 => $v2) { 
        if ($k2 == $on) { 
         $sortable_array[$k] = $v2; 
        } 
       } 
      } else { 
       $sortable_array[$k] = $v; 
      } 
     } 
     switch ($order) { 
      case SORT_ASC: 
       asort($sortable_array); 
       break; 
      case SORT_DESC: 
       arsort($sortable_array); 
       break; 
     } 
     foreach ($sortable_array as $k => $v) { 
      $new_array[$k] = $array[$k]; 
     } 
    } 
    return $new_array; 
} 
//Prepare Array List 
$list = array(
    array('type' => 'suite', 'name' => 'A-Name'), 
    array('type' => 'suite', 'name' => 'C-Name'), 
    array('type' => 'suite', 'name' => 'B-Name'), 
); 
$list = array_sort($list, 'name', SORT_ASC); 
+0

你遇到什麼錯誤? – webpic

+0

我想使用多個鍵排序數組 –

+1

@GohilVishal也請分享您的預期輸出。 –

回答

0

我看到你找到了解決辦法,但以防萬一,我會寫我的答案,也許有人認爲它有用

<?php 
    $order_by = "asc"; 
    $list = array(
     array('type' => 'suite', 'name' => 'A-Name'), 
     array('type' => 'suite', 'name' => 'C-Name'), 
     array('type' => 'suite', 'name' => 'B-Name'), 
    ); 
    usort($list, "customSort"); 

    function customSort($a, $b) { 
     global $order_by; 

     $compare = strcmp($a['name'], $b['name']); 

     if($compare == 0) { 
      return 0; 
     } else if($compare > 0) { 
      if($order_by == "asc") { 
       return 1; 
      } else { 
       return -1; 
      } 
     } else if($compare < 0) { 
      if($order_by == "asc") { 
       return -1; 
      } else { 
       return 1; 
      } 
     } 
    } 

    echo "<pre>".print_r($list, true);