Сортировка двумерного массива

Статус
В этой теме нельзя размещать новые ответы.

darkwiz

Новичок
Сортировка двумерного массива

Дано:
Двумерный массив:
$mas[$i]['a']
$mas[$i]['b']
$mas[$i]['c']

Задача:

Отсортировать его по убыванию значений $mas[$i]['c']

Как это можно осуществить? пробовал функцию rsort, но она работает с одномерными массивами, насколько я знаю.
 

Фанат

oncle terrible
Команда форума
попробуй функцию usort
она сортирует вообще все, что движется.
 

darkwiz

Новичок
Да, создал я функцию, которая будет сортировать.
Но как мне в ней указывать индекс $i,который идет вначале?

-~{}~ 09.05.07 09:35:

или сортировать необходимо в цикле? я что-то с этим не понял
 

Фанат

oncle terrible
Команда форума
мда, действительно.
а откуда этот массив берется?
 

darkwiz

Новичок
Он создается в этом же скрипте. Его элементы парсятся из html страницы. $i - порядковый номер.
['a'] - первый столбец таблиы
['b'] - второй
['c'] - третий (числовой) по которому и надо произвести сортировку
 

Фанат

oncle terrible
Команда форума
как мне в ней указывать индекс $i,который идет вначале?
не надо ничего указывать.
в нее будут передаваться элементы массива mas
а в функции просто сравнивай элементы с передаваемых одномерных массивов
 

darkwiz

Новичок
В общем полазив по php.net/usort нашел вот такую вот функцию в комментах

function columnSort($unsorted, $column) {
$sorted = $unsorted;
for ($i=0; $i < sizeof($sorted)-1; $i++) {
for ($j=0; $j<sizeof($sorted)-1-$i; $j++)
if ($sorted[$j][$column] < $sorted[$j+1][$column]) {
$tmp = $sorted[$j];
$sorted[$j] = $sorted[$j+1];
$sorted[$j+1] = $tmp;
}
}
return $sorted;
}


Проблема в том, что из файла парсится слишком большой объем данных (около 1000 записей) или чуть больше.
Я поставил скрипт работать и ушел пить кофе. Когда пришел - он работал еще минут 5.

Как можно ускорить сортировку?

Понимаю, что лучше будет разбить массив, НО! во-первых, он получается парсингом со страницы. и приходится парсить всю страницу целиком., во-вторых, мне надо получить ВСЮ информацию, чтобы правильно отсортировать (мало ли где-то в конце находится элемент, который должен быть первым)!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху