Вы можете использовать функцию asort()
Он сортирует массив поддерживания индекса ассоциации.
$arr = array('I' => 60, 'S' => 60, 'C' => 50, 'D' => 40);
asort($arr);
Но вы не должны ожидать определенный порядок сортировки для равных значений, потому что, если какой-либо из функций сортировки оценивает два члена как равны, то порядок не определен (сортировка не стабильна).
можно реализовать сортировку как по значению и ключом пути создания 2 добавочных массивов для ключей и значений, а затем с помощью array_multisort
функции:
$arr = array(
'I' => 60,
'S' => 60,
'C' => 50,
'D' => 40
);
$tag = array();
$num = array();
foreach($arr as $key => $value){
$tag[] = $key;
$num[] = $value;
}
array_multisort($num, SORT_DESC, $tag, SORT_ASC, $arr);
var_dump($arr);
/* result of var_dump($arr):
array (size=4)
'I' => int 60
'S' => int 60
'C' => int 50
'D' => int 40
*/
'но если есть повторяющиеся значения , то порядок должен быть как D> I> S> C: 'непонятно –
@ user007 алфавит указывает, что C перед S, но в моем случае буквы должны следовать этому порядку .. (сначала) D - I - S - C (последний) – Lumilo
Всегда ли в этом массиве всего 4 ключа? –