Here is a function to sort an array by the key of his sub-array with keep key in top level.
<?php
function sksort(&$array, $subkey="id", $sort_descending=false, $keep_keys_in_sub = false) {
$temp_array = $array;
foreach ($temp_array as $key => &$value) {
$sort = array();
foreach ($value as $index => $val) {
$sort[$index] = $val[$subkey];
}
asort($sort);
$keys = array_keys($sort);
$newValue = array();
foreach ($keys as $index) {
if($keep_keys_in_sub)
$newValue[$index] = $value[$index];
else
$newValue[] = $value[$index];
}
if($sort_descending)
$value = array_reverse($newValue, $keep_keys_in_sub);
else
$value = $newValue;
}
$array = $temp_array;
}
?>