[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка массива по двум критериям
file_xz
Привет, существует массив $arr, мне его нужно отсортировать по значению (по убыванию), но еще отсортировать его по ключу (по возрастанию).

$arr=array(
1 => 2806,
2 => 2806,
3 => 1743,
4 => 581,
5 => 115,
6 => 1743,
7 => 1743);

//Мне нужно чтоб массив был отсортирован так:
$arr=array(
1 => 2806,
2 => 2806,
3 => 1743,
6 => 1743,
7 => 1743,
4 => 581,
5 => 115);


Как мне это сделать? arsort() сортирует значения по убыванию - но мне нужно чтоб еще и ключ был по возрастанию - если значение одинаковое с каким то другим элементом массива. Можно как то связать ksort() и arsort() вместе?


Конечно я могу сделать следующее:


$arr=array(
1 => 2806,
2 => 2806,
3 => 1743,
4 => 581,
5 => 115,
6 => 1743,
7 => 1743);

$arr2=array();

arsort($arr);

foreach($arr as $v => $v2){
if(!is_array($arr2[$v2])){
$arr2[$v2]=array($v);
}else{
$arr2[$v2][]=$v;
}
}


krsort($arr2);

unset($arr);
$arr=array();

foreach($arr2 as $v => $v2){
asort($v2);
foreach($v2 as $v3){
$arr[$v3]=$v;
}
}


foreach($arr as $v => $v2){
echo "$v => $v2<br>";
}



Но думаю что можно решить мой вопрос более упрощенно, не создавай лишний двумерный массив.


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.