There are few ways using some php sort functions (like other guys already sugessted), this is another short way how to do this job.
function sortArrayByKeys()
function sortArrayByKey($keystring, $origarray) {
$res = array();
$keys = explode(',', $keystring);
foreach ($keys as $key) $res[] = $origarray[$key];
return $res;
}
test:
$original_array = array('A', 'B', 'C', 'D', 'E', 'F');
$sort_pattern = '5,2,4,1,3,0';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array) . "<br />\n";
$sort_pattern = '0,2,4,1,3,5';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array) . "<br />\n";
$sort_pattern = '5,4,3,2,1,0';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array) . "<br />\n";
$sort_pattern = '0,5,4,2,1,3';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array);
output:
5,2,4,1,3,0 => F,C,E,B,D,A
0,2,4,1,3,5 => A,C,E,B,D,F
5,4,3,2,1,0 => F,E,D,C,B,A
0,5,4,2,1,3 => A,F,E,C,B,D
Cheers ;)
array_multisort
– deceze Oct 9 '12 at 5:44