php - How i can sort 2 dimensional array? -
this question has answer here:
how can sort following array
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 ) )
i want sort above array following sort options
- no of transactions (high low)
- commission (high low)
- order value (high low)
i trying sort using array_multisort
not success far
try
function sort_custom_array($arr,$key,$sort='asc'){ foreach($arr &$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; }
now can sort fields in array below:
$arr1 = sort_custom_array($arr,'ordervalue','desc'); echo "<pre>"; print_r($arr1);
see demo here
Comments
Post a Comment