php — сортировка многомерного массива
Имеем массив, составленный следующим образом:
$parts=array(); foreach($arr as $item){ $parts[]=array( 'name'=>$item['name'], 'manufacturer'=>$item['maker'], 'amount'=>$item['quantity'], 'price'=>$item['price'], 'term'=>$item['days'], 'code'=>$item['orderreference'], ); }
Для сортировки по одному из ключей:
if(isset($_GET['order'])){ foreach($parts as $k=>$v){ $t_price[$k]=$v['price']; $t_amount[$k]=$v['amount']; $t_term[$k]=$v['term']; } switch($_GET['order']){ case 'price': array_multisort($t_price,SORT_ASC,$parts); break; case 'amount': array_multisort($t_amount,SORT_ASC,$parts); break; case 'term': array_multisort($t_term,SORT_ASC,$parts); break; } }
От меньшего к большему и от большего к меньшему:
if(isset($_GET['sort'])){ foreach($parts as $k=>$v){ $t_price[$k]=$v['price']; $t_amount[$k]=$v['amount']; $t_term[$k]=$v['term']; } $order=($_GET['order']=='desc')?SORT_DESC:SORT_ASC; switch($_GET['sort']){ case 'price': array_multisort($t_price,$order,$parts); break; case 'amount': array_multisort($t_amount,$order,$parts); break; case 'term': array_multisort($t_term,$order,$parts); break; } }