Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка
 
 автор: kazakru   (20.07.2006 в 17:22)   письмо автору
 
 

Доброго Вам времени.
Уважаемые гуру, вот столкнулся с проблемой сортировки.
есть например массив

[47] => 21.03
[48] => 21.03.1843
[49] => 22.03
[50] => 23.03
[51] => 24.03.1999
[52] => 27.03
[53] => 27.03.1983
[54] => 18.03
[55] => 25.03

продолжение массива но месяц другой

[56] => 21.04
[57] => 21.04.1843
[58] => 22.04
[59] => 23.04
[60] => 24.04.1999
[61] => 27.04
[62] => 27.04.1983
[63] => 18.04
[64] => 25.04
обратите внимание на последние две записи в обоих половинах масива,
вообше все записи по дате сортируются еще в процессе запроса из базы данных, но есть даты которые обозначаются как например
U3.03
U5.03
они после считывания из базы вычисляются в реальные даты и добавляются в тот массив.
и соответсвенно получаются в конце каждого месяца
вот как можно теперь отсортировать массив что бы он стал нормальным?
Я мучался с SORT() ноничег оне получается.
всегда получаеться типа
18.03
18.04
20.03.1843
20.04.1843
21.03
21.04
22.03
22.04
23.03
23.04
24.03.1999
24.04.1999
25.03
25.04
27.03
27.03.1983
27.04
27.04.1983

а надо что бы по месяцам было

   
 
 автор: Trianon   (20.07.2006 в 19:03)   письмо автору
 
   для: kazakru   (20.07.2006 в 17:22)
 

Вам нужно вычислить массив реальных дат этого года, и отсортировать его по значению меток времени.

   
 
 автор: kazakru   (20.07.2006 в 21:26)   письмо автору
 
   для: Trianon   (20.07.2006 в 19:03)
 

хм, а нет например чего либо подобного что бы просто указать что надо отсортировать по 4 и 5 символу...

а по значению меток времени как отсортировывать?

   
 
 автор: Axxil   (20.07.2006 в 23:29)   письмо автору
 
   для: kazakru   (20.07.2006 в 21:26)
 

можно так попробовать ($arr искомый массив):

<?php
// вытаскиваем месяц вперёд
function make(&$item){
  list(
$day,$month,$year) = explode(".",$item);
  
$item $month.".".$day.".".$year;
}
// возвращаем всё обратно
function make2(&$item){
  list(
$month,$day,$year) = explode(".",$item);
  
$item $day.".".$month;
  if(!empty(
$year)) $item .= ".".$year;
}
array_walk($arr,'make');
asort($arr);
array_walk($arr,'make2');
print_r($arr);
?>

   
 
 автор: kazakru   (21.07.2006 в 00:04)   письмо автору
 
   для: Axxil   (20.07.2006 в 23:29)
 

воо, сенкс счас пойду пробовать

а скажите уважаемые гуру
реально ли сделать что бы например в каком либо цикле с неизвестным количеством проходов , после каждого прохода данные записывались бы в свой массив автоматически создаваемый.

тоесть первый проход в массив $qwe1[] записались бы данные
при втором в $qwe2[] и так далее.

и если это реально то подскажите заодно как можно потом соединить несколько массивов последовательно ?

просто я подумал что мне достаточно из базы вытащить все данные сразу только каждый месяц в свой массив, отсортировать ( там проблем не будет ) и соединить массивы последовательно

   
 
 автор: Axxil   (21.07.2006 в 00:14)   письмо автору
 
   для: kazakru   (21.07.2006 в 00:04)
 

Функция array_merge объединяет массивы.
Только нафига такой огород городить?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования