Я как понимаю отсортировать одноуровневый массив у вас не вызывает трудностей?
Так почему тогда не использовать рекурсивный вызов такой функции? Тем более в первом примере рекурсия используется.
Простой пример с методом пузырька будет выглядеть так:
function mySort($array){
// перебираем массив
for ($j = 0; $j < count($array) - 1; $j++){
for ($i = 0; $i < count($array) - $j - 1; $i++){
// если текущий элемент больше следующего
if ($array[$i] > $array[$i + 1]){
// меняем местами элементы
$tmp_var = $array[$i + 1];
$array[$i + 1] = $array[$i];
$array[$i] = $tmp_var;
}
}
}
//Производим сортировку во вложенных массивах, по необходимости можно выполнить перед основной сортировкой
foreach ($array as $key => &$item){
if (is_array($item)){
$item = mySort($item);
}
}
return $array;
}
$arr = array(7,9,8,array(3,2,1),1,2,3,4,5,6);
print_r(mySort($arr));
Все кроме строк:
foreach ($array as $key => &$item){
if (is_array($item)){
$item = mySort($item);
}
}
является реализацией метода пузырька.
PS: для реализации сортировки вложенных уровней достаточно слегка изменить пример с quicksort, но я думаю автор это сделает самостоятельно...