Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Сортировка многомерного массива / 3 сообщений из 3, страница 1 из 1
12.05.2005, 13:02
    #33059625
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка многомерного массива
Есть массив
$my_array[$i][1] = 'Иванов'
$my_array[$i][2] = 'Петя'
$my_array[$i][8] = '26.01.2005 15:12'
...
$my_array[$i][11] - поле сортировки... может быть строковое или дата/время в зависимости от условия...

$my_array = incision_sort($my_array,11);

Есть функция сортировки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  function incision_sort($arr, $col)
  {
    for($k =  0 ; $k < sizeof($arr)- 1 ; $k++)
    {
      $t = $arr[$k+ 1 ]; 
      $i = $k;    
      while($i >=  0  and $arr[$i][$col] < $t[$col])
      {
        $arr[$i+ 1 ] = $arr[$i];
        $i--;
      } 
      $arr[$i+ 1 ] = $t;                            
    }
    return $arr;        
  }

Она подходит только для строковых... а мне надо что б и для даты/время...
Плиз хелп...
...
Рейтинг: 0 / 0
12.05.2005, 13:17
    #33059675
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка многомерного массива
...
Рейтинг: 0 / 0
12.05.2005, 13:53
    #33059785
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка многомерного массива
Вопрос снят...

Я пошел други путем...

Привык работать со строками и масивами прямиком

Есть массив
$my_array[$i][1] = 'Иванов'
$my_array[$i][2] = 'Петя'
$my_array[$i][8] = '26.01.2005 15:12'
...
$my_array[$i][11] - поле сортировки... может быть строковое или дата/время в зависимости от условия...

$my_array = incision_sort($my_array,11,$i);
//$i -> 0,1 в зависимости от условия...

Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
// Функция сортировки
// $arr = массив для сортировкм
// $col = колонка сортировки
  function incision_sort($arr, $col, $date)
  {
    for($k =  0 ; $k < sizeof($arr)- 1 ; $k++)
    {
      $t = $arr[$k+ 1 ]; 
      $i = $k;    
      if ($date ==  0 )
      {
        while($i >=  0  and $arr[$i][$col] < $t[$col])
        {
          $arr[$i+ 1 ] = $arr[$i];
          $i--;
        } 
        $arr[$i+ 1 ] = $t;
      }
      else
      {
        $min=substr($arr[$i][$col], 14 , 2 );
        $ch=substr($arr[$i][$col], 11 , 2 );
        $den=substr($arr[$i][$col], 0 , 2 );
        $mes=substr($arr[$i][$col], 3 , 2 );
        $god=substr($arr[$i][$col], 6 , 4 );
        $min1=substr($t[$col], 14 , 2 );
        $ch1=substr($t[$col], 11 , 2 );
        $den1=substr($t[$col], 0 , 2 );
        $mes1=substr($t[$col], 3 , 2 );
        $god1=substr($t[$col], 6 , 4 );
        while($i >=  0  and (god<god1 or (god==god1 and $mes<$mes1) or (god==god1 and $mes=$mes1 and $den<$den1)
               or (god==god1 and $mes=$mes1 and $den=$den1 and $ch<$ch1) or (god==god1 and $mes=$mes1 and $den=$den1 and $ch=$ch1 and $min<$min1)))
        {
          $arr[$i+ 1 ] = $arr[$i];
          $i--;
        } 
        $arr[$i+ 1 ] = $t;
      }
    }
    return $arr;        
  }



Всем ответившим ОГРОМНЫЙ сенкс
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Сортировка многомерного массива / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]