Автор Тема: Сортировка двумерного массива  (Прочитано 7053 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gekt0r

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сортировка двумерного массива
« : 07 Марта 2008, 14:13:58 »
Всем привет, полазил по форуму и гуглу, не нашел пока решения...
Задача в следующем:
Есть двумерный массив $table []
В нем лежит таблица с расписанием занятий. Первая ячейка строки - день недели, строка вида \'ПН\', \'ВТ\', \'СР\'  и т.д.
доступ к значениям ячейки - $table->
  • ->
  • ->{value} - значение первой ячейки первой строки, $table->
  • ->[1]->{value} - второй строки и т.д.

надо отсортировать весь массив по дню недели, чтобы сначала шли все понедельники, потом - вторники и т.д.
Я пока программист не очень умелый) и хочу стать лучше) нужна ваша помощь. По идее это должно быть несложно, парой строк можно сделать...

Оффлайн 09h

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 82
  • +0/-0
  • 0
    • Просмотр профиля
Сортировка двумерного массива
« Ответ #1 : 07 Марта 2008, 23:39:08 »
у меня на этуже тему вопрос дабы новую не делать напишу тут ..

$table->
  • ->
  • ->{value} = "СР";

$table->
  • ->[1]->{value} = "ЧТ";

$table->
  • ->[2]->{value} = "ВТ";


$i = "0";
while ($i < \'3\') {
print "$table->
  • ->[$i]->{value}";

$i++;
}

как сделать тоже самое только при помощи цикла foreach  ну чтоб не задавать значение $i ... ?
ЗЫ никада не пользовался двумерными массивами с синтаксисом не дружу чтото вроде foreach $temp (@table->
  • ...) { нада..
Gekt0r
примерно так:

(@days) = (\'ПН\',\'ВТ\',\'СР\',\'ЧТ\',\'ПТ\',\'СВ\',\'ВС\');

$table->
  • ->
  • ->{value} = "СР";

$table->
  • ->[1]->{value} = "ЧТ";

$table->
  • ->[2]->{value} = "ВТ";


foreach $day (@days) {

$i = "0";
while ($i < \'3\') {
if ($day eq $table->
  • ->[$i]->{value}) { print "\\$table->
  • ->[$i]->{value} = $table->
  • ->[$i]->{value}

"; }
$i++;
}

}

перебираеш дни недели в нужной последовательности ну и печатаеш или вместо print мона в другой массив сохранять уже как нада
« Последнее редактирование: 08 Марта 2008, 00:14:49 от 09h »

Оффлайн 09h

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 82
  • +0/-0
  • 0
    • Просмотр профиля
Сортировка двумерного массива
« Ответ #2 : 08 Марта 2008, 02:17:01 »
>>Вот нашел << статью

двумерный массив оказывается не такая простая штука как звучит ) всю голову поломал но разобрался .. трудновато понимать када не задумывался даж никада )) во как вышло

$xx[0][0]{value} = "0";
$xx[0][1]{value} = "1";
$xx[0][2]{value} = "2";

foreach (@{$xx[0]}) {
print "${$_}{value}
";
}

ЗЫ тем кто не в курсе что означет -> и ${${$a[$i]}[$j]}[$k] советую прочитать статью ))
« Последнее редактирование: 08 Марта 2008, 02:59:04 от 09h »

Оффлайн Gekt0r

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сортировка двумерного массива
« Ответ #3 : 11 Марта 2008, 14:37:57 »
09h, идея сработала, спасибо большое!
А с ссылками в Перле гемор тот еще)

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сортировка двумерного массива
« Ответ #4 : 11 Марта 2008, 16:34:02 »
вобще на перле правильней было бы использовать map, sort, cmp, grep
убили кенни, сволочи

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28