- var_dump: documentation ( source)
- uasort: documentation ( source)
- array_walk: documentation ( source)
<?php
$test = [
3 => 'a',
2 => 'b',
1 => 'a'
];
array_walk($test, fn(&$value, $key) => $value=['key'=>$key,'value'=>$value]);
uasort($test, fn($a, $b) => $a['value'] <=> $b['value'] ?: $a['key'] <=> $b['key']);
array_walk($test, fn(&$pair) => $pair=$pair['value']);
var_dump($test);