For example I have the following code that can sort by one element:
Code: Select all
$people = array(
'0' => array('loc' => 'DC', 'job' => 'Driver', 'pay' => '20'),
'1' => array('loc' => 'LA', 'job' => 'Chef', 'pay' => '40'),
'2' => array('loc' => 'NY', 'job' => 'Fire Eater', 'pay' => '100'),
'3' => array('loc' => 'LA', 'job' => 'Boss', 'pay' => '55'),
'4' => array('loc' => 'NY', 'job' => 'Drunkard', 'pay' => '44'),
'5' => array('loc' => 'NY', 'job' => 'Thief', 'pay' => '55')
);
echo "<html><pre>";
echo sort_array($people, "pay");
echo"</pre></html>";
function sort_array($array, $key) {
$keys = array();
for ($i = 1; $i < func_num_args(); $i++) {
$keys[$i - 1] = func_get_arg($i);
}
// anon function
$func = function ($a, $b) use ($keys) {
for ($i = 0; $i < count($keys); $i++) {
if ($a[$keys[$i]] != $b[$keys[$i]]) {
return ($a[$keys[$i]] > $b[$keys[$i]]) ? -1 : 1;
}
}
return 0;
};
usort($array, $func);
return $array;
}'2' => array('loc' => 'NY', 'job' => 'Fire Eater', 'pay' => '100')
'5' => array('loc' => 'NY', 'job' => 'Thief', 'pay' => '55')
'4' => array('loc' => 'NY', 'job' => 'Drunkard', 'pay' => '44')
'3' => array('loc' => 'LA', 'job' => 'Boss', 'pay' => '55')
'1' => array('loc' => 'LA', 'job' => 'Chef', 'pay' => '40')
'0' => array('loc' => 'DC', 'job' => 'Driver', 'pay' => '20')
Any ideas?