$array = [
['sort_1' => 1, 'sort_2' => 22, 'sort_3' => 23],
['sort_1' => 5, 'sort_2' => 12, 'sort_3' => 13],
['sort_1' => 3, 'sort_2' => 21, 'sort_3' => 43],
];
$fields = ['sort_1' => 1, 'sort_3' => -1];
usort($array, function ($a, $b) use ($fields) {
foreach ($fields as $field => $direction) {
$result = $a[$field] <=> $b[$field];
return $result * $direction;
}
return 0;
});
В $fields указываете какие поля и в каком направлении сортировать (1 - по возрастанию, -1 - по убыванию).
Таким образом вы можете сортировать по разным полям в разном направлении.