

Array
(
[1] => Array
(
[0] => 1
[1] => a
[2] => э
[3] => 44
)
[2] => Array
(
[0] => 2
[1] => d
[2] => ю
[3] => 33
)
[3] => Array
(
[0] => 3
[1] => b
[2] => я
[3] => 22
)
[4] => Array
(
[0] => 4
[1] => c
[2] => а
[3] => 11
)
)
usort($array, "sortir");
//, где
function sortir($a, $b) {
return strnatcasecmp($a[1], $b[1]); // если надо, к примеру, по второму столбцу сортирнуть
}

ну, типа, какой-нить $id
global $row_sortir;
....
usort($array, "sortir");
//, где
function sortir($a, $b) {
global $row_sortir;
return strnatcasecmp($a[$row_sortir-1], $b[$row_sortir-1]);
}
Алексей, ты издеваешься надо мной?
я не рублю в php, чтоб расшифровать там написанное, мне придётся переводить всё это с php на русский
я уже "догадался" как отсортировать, и это мне стоило не один год жизни
мне просто хочется внутрь функции передать аргумент 
$file = $f;
$action = $modx->documentIdentifier;
global $row_sortir;
$row_id = 1;
$Output =<<<EOD
<form method="post" action="[~[*id*]~]">
<select name="selectId">
<option value="1">по названию</option>
<option value="3">по ИФНС</option>
<option value="4">по дате</option>
<option value="5">по цене</option>
</select>
<input type="submit" name="submit" value="отсортировать">
</form>
EOD;
echo $Output;
if (isset($_POST["submit"])) {
$row_id = $_POST["selectId"];
}
// Начало таблицы
$table_start = "<table border=1 cellspacing=0 cellpadding=0 class=price>\n";
echo $table_start;
if ($row_id == 1) {
echo "<colgroup><col class=sort_by></col><col span=5></col></colgroup>";
}
elseif ($row_id == 2) {
echo "<colgroup><col></col><col class=sort_by></col><col span=4></col></colgroup>";
}
elseif ($row_id == 3) {
echo "<colgroup><col span=2></col><col class=sort_by></col><col span=3></col></colgroup>";
}
elseif ($row_id == 4) {
echo "<colgroup><col span=3></col><col class=sort_by></col><col span=2></col></colgroup>";
}
else {
echo "<colgroup><col span=4></col><col class=sort_by></col><col></col></colgroup>";
}
echo "\n<tr>\n";
$row = 0;
$fp = fopen ("$file","r"); // файл открыт
// получаем построчно данные из csv-файла с разделителями
while ($data = fgetcsv ($fp, 1000, ";")) {
$counter = count ($data);
for ($c=0; $c<$counter; $c++) {
// Первую строчку таблицы выводим как заголовок
if ($row == 0) {
echo $th = "<th>$data[$c]</th>\n";
}
else {
if ($c == 3) $data[$c] = date_convert ($data[$c]);
$huy[$row] = $data; // тупо нумеруем массив,построчно
}
}
$r = $row;
if ($data['1'] != "$got") $huy[$row] = 0; //по второму столбцу мне сортировка не нужна, я просто отрубаю строчку по критерию
$row++;
}
$row_sortir = $row_id;
usort($huy, "sortir");
// Заканчиваем первую строку в таблице
$output .= "</tr>\n";
for ($cc=0; $cc<$r; $cc++)
{
if ($huy[$cc] == 0) {
$output .= "";
}
else {
$output .= "<tr>\n";
for ($c=0; $c<$counter; $c++)
{
if ($c == 1) {
$output .= "<td class='".$c."'><strong>".$huy[$cc][$c]."</strong></td>\n";
}
else {
$output .= "<td class='".$c."'>".$huy[$cc][$c]."</td>\n";
}
}
$output .= "</tr>\n";
}
}
$output .= "</table>";
fclose ($fp);
return $output;
function sortir($a, $b) {
global $row_sortir;
return strnatcasecmp($a[$row_sortir-1], $b[$row_sortir-1]);
}
function date_convert($_s) {
$a = explode('.', $_s);
if (sizeof($a) != 3) return 'BUEEEEE!!!';
return trim($a[2]).'-'.trim($a[1]).'-'.trim($a[0]) ;
}