Я пытаюсь сделать то же самое, что и mySQL-запрос "SELECT * FROM table ORDER BY field1, field2,..." с многомерным массивом:
$Test = array(
    array("a"=>"004", "n"=>"03"),
    array("a"=>"003", "n"=>"02"),
    array("a"=>"001", "n"=>"02"),
    array("a"=>"005", "n"=>"01"),
    array("a"=>"001", "n"=>"01"),
    array("a"=>"004", "n"=>"02"),
    array("a"=>"003", "n"=>"01"),
    array("a"=>"004", "n"=>"01")
);
function msort(&$array, $keys){
    array_reverse($keys);
    foreach($keys as $key){
        uasort($array, sortByKey);
    }
    //
    function sortByKey($A, $B){
        global $key;
        $a = $A[$key];
        $b = $B[$key];
        if($a==$b) return 0;
        return ($a < $b)? -1 : 1 ;
    }
}
//
msort($Test, array("a","n"));
//
foreach($Test as $t){
    echo('<p>'.$t["a"].'-'.$t["n"].'</p>');
}
Моя теория такова: если я сортирую умножить время на менее важный ключ к самому важному ключу, я закажу такой запрос mySQL.
Но php возвращает "Warning: uasort() ожидает, что параметр 2 будет действительным обратным вызовом, функция" sortByKey "не найдена или недействительным именем функции в /Library/WebServer/Documents/www/teste.array_sort.php в строке 23" (линия uasort)
Это простая функция заказа, чего мне не хватает?
