Научите пожалуйста, как просто отсортировать массив!
Есть двумерный массив :
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,
а для не равных - число мельше/больше нуля, если первый аргумент должен встать в ряд раньше/позже второго.
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, это потрясающе!
Такой небольшой код и всё работает! Круто!
Большое спасибо!
только честно говоря я пока не могу понять, как оно так работает...
ммм...
получается $p - это строки массива $a, если можно так представить $a=array($p[$j], $p[$j], ...) и поэтому мы сравниваем уже элементы $p[10] :-)
Такой небольшой код и всё работает! Круто!
Большое спасибо!

только честно говоря я пока не могу понять, как оно так работает...
ммм...
получается $p - это строки массива $a, если можно так представить $a=array($p[$j], $p[$j], ...) и поэтому мы сравниваем уже элементы $p[10] :-)
Спустя 16 минут, 25 секунд (15.03.2011 - 14:58) Trianon написал(а):
$p и $q - это переставляемые элементы массива $a,
уж коль скоро массив $a сам состоит из массивов(строк), то да, $p и $q - строки.
уж коль скоро массив $a сам состоит из массивов(строк), то да, $p и $q - строки.
Спустя 6 минут, 8 секунд (15.03.2011 - 15:04) zvezda_t написал(а):
Здорово!!!
Мне нравиться

Мне нравиться


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