jeżeli chcesz sortować tabelę niekoniecznie z sqla to musisz mieć taką strukturę:
$tabela = Array(
0 => Array(pierwszakolumna_pierwszywiersz, pierwszakolumna_drugiwiersz, pierwszakolumna_trzeciwiersz),
1 => Array(drugakolumna_pierwszywiersz, drugakolumna_drugiwiersz, drugakolumna_trzeciwiersz)
);
normalnie masz pewnie taką:
$tabela = Array(
0 => Array(pierwszakolumna_pierwszywiersz, drugakolumna_pierwszywiersz),
1 => Array(pierwszakolumna_drugiwiersz, drugakolumna_drugiwiersz),
2 => Array(pierwszakolumna_trzeciwiersz, drugakolumna_trzeciwiersz)
);
jeśli nie dasz rady od razu dostać danych w takiej formie to możesz przekształcić drugą na pierwszą takimi np instrukcjami:
$tabelaout = Array();
foreach($tabelain as $wiersz){
foreach($wiersz as $k => $v){
$tabelaout[$k][] = $v;
}
}
i potem sortowanie to już prosta sprawa:
array_multisort($tabelaout[0], SORT_STRING, SORT_ASC, $tabelaout[1], SORT_DESC, SORT_NUMERIC);
czyli po prostu wypisujesz tutaj które kolumny mają być posortowane i w jakiej kolejności mają być brane pod uwagę, czyli będzie posortowane rosnąco (SORT_ASC) jako stringi (SORT_STRING) w/g pierwszej kolumny ($tabelaout[0]) a jeśli rekordy w pierwszej kolumny będą identyczne to brana pod uwagę będzie druga kolumna ($tabelaout[1]) w/g której dane będą posortowane malejąco (SORT_DESC) jako liczby (SORT_NUMERIC)
lub możesz wyciągnąć tylko jedną kolumnę w/g której chcesz posortować:
$tabelaout = Array();
foreach($tabelain as $wiersz){
$tabelaout[] = $wiersz[1]; // według drugiej kolumny (liczone od zera)
}
i potem:
array_multisort($tabelaout, $tabelain); // tabelain (wejsciowa) będzie posortowana według kolumny drugiej (tabelaout - wyciągnięta kolumna druga)