<?php
function multiSort(array $rows, array $columns): array {
// $columns: ['name' => 'asc', 'age' => 'desc']
usort($rows, function ($a, $b) use ($columns) {
foreach ($columns as $col => $dir) {
$av = $a[$col] ?? null;
$bv = $b[$col] ?? null;
$cmp = $av <=> $bv;
if ($cmp !== 0) return strtolower($dir) === 'desc' ? -$cmp : $cmp;
}
return 0;
});
return $rows;
}
$rows = [
['name'=>'Bob','age'=>30],
['name'=>'Alice','age'=>25],
['name'=>'Alice','age'=>35],
];
print_r(multiSort($rows, ['name'=>'asc','age'=>'desc']));
Create a free account and build your private vault. Share publicly whenever you want.