Сортировка массива

Статус
В этой теме нельзя размещать новые ответы.

rasandrey

Участник
Регистрация
2 Апр 2009
Сообщения
214
Реакции
6
Есть такой массив:
PHP:
    $maska_go[1]['id'] = '1' ;
    $maska_go[1]['name'] = '1900' ;
    
    $maska_go[2]['id'] = '2' ;
    $maska_go[2]['name'] = '1904' ;
    
    $maska_go[3]['id'] = '3' ;
    $maska_go[3]['name'] = '1903' ;
    
    $maska_go[4]['id'] = '4' ;
    $maska_go[4]['name'] = '1902' ;
    
    $maska_go[5]['id'] = '5' ;
    $maska_go[5]['name'] = '1901' ;

Как можно отсортировать массив, чтобы в итоге значения $maska_go[$i]['name'] были отсортированы в порядке убывания? Т.е. на выходе получить такой масссив:
PHP:
	$maska_go[1]['id'] = '5' ;
	$maska_go[1]['name'] = '1904' ;
	
	$maska_go[2]['id'] = '4' ;
	$maska_go[2]['name'] = '1903' ;
	
	$maska_go[3]['id'] = '3' ;
	$maska_go[3]['name'] = '1902' ;
	
	$maska_go[4]['id'] = '2' ;
	$maska_go[4]['name'] = '1901' ;
	
	$maska_go[5]['id'] = '1' ;
	$maska_go[5]['name'] = '1900' ;
 
PHP:
function compare_id($a, $b)
{
  return cmp($a['id'], $b['id']);
}
usort($maska_go, 'compare_id');
 
к примеру так, сортировка по значению 'name', 'id' изменяются, а индексы итогового массива начинаются с '1'

PHP:
$maska_go = name_sort($maska_go);

function name_sort($arr) {
	foreach ($arr as $str)
	$res_arr[] = $str['name'];
	natsort($res_arr);
	$res_arr=array_reverse($res_arr);
	$i = count($res_arr)+1;
	foreach ($res_arr as $str) { $a++; $i--;
	$res_arr2[$a] = array('id'=>$i,'name'=>$str); }
	return $res_arr2; }
 
может ёщё пригодиться array_natsort_list()
 
PHP:
//сортировка по ключам
ksort($maska_go);
print_r($maska_go);

//сортировка по ключам в обратном порядке
krsort($maska_go);
print_r($maska_go);

Это то что вам нужно.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху