Программирование > Perl
Сортировка двумерного массива
(1/1)
Gekt0r:
Всем привет, полазил по форуму и гуглу, не нашел пока решения...
Задача в следующем:
Есть двумерный массив $table []
В нем лежит таблица с расписанием занятий. Первая ячейка строки - день недели, строка вида \'ПН\', \'ВТ\', \'СР\' и т.д.
доступ к значениям ячейки - $table->[0]->[0]->{value} - значение первой ячейки первой строки, $table->[0]->[1]->{value} - второй строки и т.д.
надо отсортировать весь массив по дню недели, чтобы сначала шли все понедельники, потом - вторники и т.д.
Я пока программист не очень умелый) и хочу стать лучше) нужна ваша помощь. По идее это должно быть несложно, парой строк можно сделать...
09h:
у меня на этуже тему вопрос дабы новую не делать напишу тут ..
$table->[0]->[0]->{value} = "СР";
$table->[0]->[1]->{value} = "ЧТ";
$table->[0]->[2]->{value} = "ВТ";
$i = "0";
while ($i < \'3\') {
print "$table->[0]->[$i]->{value}";
$i++;
}
как сделать тоже самое только при помощи цикла foreach ну чтоб не задавать значение $i ... ?
ЗЫ никада не пользовался двумерными массивами с синтаксисом не дружу чтото вроде foreach $temp (@table->[0]...) { нада..
Gekt0r
примерно так:
(@days) = (\'ПН\',\'ВТ\',\'СР\',\'ЧТ\',\'ПТ\',\'СВ\',\'ВС\');
$table->[0]->[0]->{value} = "СР";
$table->[0]->[1]->{value} = "ЧТ";
$table->[0]->[2]->{value} = "ВТ";
foreach $day (@days) {
$i = "0";
while ($i < \'3\') {
if ($day eq $table->[0]->[$i]->{value}) { print "\\$table->[0]->[$i]->{value} = $table->[0]->[$i]->{value}
"; }
$i++;
}
}
перебираеш дни недели в нужной последовательности ну и печатаеш или вместо print мона в другой массив сохранять уже как нада
09h:
>>Вот нашел
Gekt0r:
09h, идея сработала, спасибо большое!
А с ссылками в Перле гемор тот еще)
ravshaniy:
вобще на перле правильней было бы использовать map, sort, cmp, grep
Навигация
Перейти к полной версии