$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>";
}
Но думаю что можно решить мой вопрос более упрощенно, не создавай лишний двумерный массив.