[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка по столбцу двумерного массива
zvezda_t
Здравствуйте, уважаемые программисты!

Научите пожалуйста, как просто отсортировать массив!
Есть двумерный массив :
for($i=0; $i<=30; $i++)
{ for($j=0; $j<=10; $j++)
{ print " ".$a[$i][$j];
} print "<br/>";
}


Мне нужно отсортировать строки в порядке убывания последнего столбца $a[$i][10]. Как проще всего это сделать, подскажите пожалуйста?

пыталась использовать функцию array_multisort:

//меняем строки и столбцы местами
for($i=0; $i<=30; $i++)
for($j=0; $j<=10; $j++) $s[$j][$i]=$a[$i][$j];

//сортировка массива по значению столбца 10
array_multisort($s[10],SORT_DESC);

В итоге отсортировался только последний столбец, а весь массив остался неизменным.((



Спустя 8 минут, 45 секунд (15.03.2011 - 14:24) Trianon написал(а):
Обычно применяют функцию сортировки с указанным helper-ом сравнения.
helper должен уметь сравнивать элементы, и для равных выдавать 0,
а для не равных - число мельше/больше нуля, если первый аргумент должен встать в ряд раньше/позже второго.

function comparator($p, $q) { return $p[10] == $q[10] ? 0 
: ($p[10] < $q[10] ? 1 : -1); }
usort($a, 'comparator');

Спустя 17 минут, 12 секунд (15.03.2011 - 14:41) zvezda_t написал(а):
Trianon, это потрясающе!
Такой небольшой код и всё работает! Круто!
Большое спасибо! smile.gif

только честно говоря я пока не могу понять, как оно так работает...

ммм...
получается $p - это строки массива $a, если можно так представить $a=array($p[$j], $p[$j], ...) и поэтому мы сравниваем уже элементы $p[10] :-)

Спустя 16 минут, 25 секунд (15.03.2011 - 14:58) Trianon написал(а):
$p и $q - это переставляемые элементы массива $a,
уж коль скоро массив $a сам состоит из массивов(строк), то да, $p и $q - строки.

Спустя 6 минут, 8 секунд (15.03.2011 - 15:04) zvezda_t написал(а):
Здорово!!!user posted image
Мне нравиться rolleyes.gif user posted image


_____________

Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.