2014-02-06 29 views
1

如何排序以下陣列如何排序2維數組?

Array 
(
    [17] => Array 
     (
      [network_id] => 17 
      [network_name] => M4N 
      [total_transactions] => 4 
      [commission] => 6.08 
      [ordervalue] => 101 
      [pending] => 0 
      [approved] => 4 
     ) 

    [18] => Array 
     (
      [network_id] => 18 
      [network_name] => Zanox 
      [total_transactions] => 32 
      [commission] => 33.7 
      [ordervalue] => 1010.45 
      [pending] => 0 
      [approved] => 32 
     ) 
) 

我想通過以下排序選項上面的數組進行排序

  • 沒有交易(從高到低)
  • 委員會(從高到低)
  • 訂單價值(從高到低)

我試圖對它進行排序使用array_multisort但目前尚未成功

+0

在[這]看看(HTTP ://stackoverflow.com/questions/21424003/sort-php-different-format-multidimensional-a我的答案。這可能有助於 –

+2

http://stackoverflow.com/questions/15062210/how-do-i-sort-the-follwing-array/15062573#15062573 –

+1

http://stackoverflow.com/questions/15476085/how-to-排序陣列在遞降順序爲基礎的上-A-特定值/ 15476161#15476161 –

回答

1

嘗試

function sort_custom_array($arr,$key,$sort='asc'){ 
foreach($arr as &$r){ 
     $network_id[] = $r['network_id']; 
     $network_name[] = $r['network_name']; 
     $total_transactions[] = $r['total_transactions']; 
     $commission[] = $r['commission']; 
     $ordervalue[] = $r['ordervalue']; 
     $pending[] = $r['pending']; 
     $approved[] = $r['approved']; 
} 
$sort = ($sort=='asc')? constant('SORT_ASC') : constant('SORT_DESC'); 
switch($key){ 
    case 'network_id': 
    array_multisort($network_id, $sort, $arr); 
    break; 
    case 'network_name': 
    array_multisort($network_name, SORT_NATURAL , $arr); 
    if($sort==3){ 
     $arr = array_reverse($arr, true); 
    } 
    break; 
    case 'total_transactions': 
    array_multisort($total_transactions, $sort, $arr); 
    break; 
    case 'commission': 
    array_multisort($commission, $sort, $arr); 
    break; 
    case 'ordervalue': 
    array_multisort($ordervalue, $sort, $arr); 
    break; 
    case 'pending': 
    array_multisort($pending, $sort, $arr); 
    break; 
    case 'approved': 
    array_multisort($approved, $sort, $arr); 
    break; 
} 
    return $arr; 
} 

現在你可以域此數組中像下面排序:

$arr1 = sort_custom_array($arr,'ordervalue','desc'); 
echo "<pre>"; 
print_r($arr1); 

觀看演示here