Главная > PHP > php — сортировка многомерного массива

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;
	}
}
Categories: PHP Tags:
  1. Пока что нет комментариев.
Похожие публикации