![]() |
Страницы (2): [1] 2 » Показаны 19 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Гуру! Срочно нужна помощь! (http://netadmin.ws/forum/showthread.php?threadid=825)
Гуру! Срочно нужна помощь!
Народ такая задача
Прога на ПХП с использованием dba
Тип базы "dba3".
В базе хранятся данные типа:
13::01/02/2002::тут::что-то
...
...
...
01::04/02/2002::хмм тут::и тут что-то
обозначения
13 ... 01 это номер записи, который соответствует ключу!
нужно сделать сортировку по дате по возрастанию и по убыванию, т.е.
asc 01/02/2002 ... 04/02/2002
desc 04/02/2002 ... 01/02/2002
Как это возможно?
Ð_ебята горю поможите!!! 
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Не работал с DBA , даже не в курсе что за вещь , но если это одно и то же что и DBase , то можно попробовать вытащить все в ассоциативный массив а там уже пойдет сортировка массива ...
__________________
The time was broken ...
Ð_то обычная файловая ДБ.
Я могу вытащить все в массив...
Сортировку нужно вести по дате.
Мне посоветовали дату представить к примеру как 20020402, 20010401...
И уже вести сортировку по ней, но как вытащить из этого массива только часть value???
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Только часть значений ? это как ? Что собтвенно тебе нужно ?
PS Если хочешь отсортировать дату я думаю оптимально было бы конвертнуть ее в unixtime, а там и с периодами просто и со всем остальным .
__________________
The time was broken ...
2 RaZEr
Существует массив.
Данные такие:
12::12/02/2002::влдыл влаов валова::лываоылвоалыва
13::31/03/2002::лывоа вылаоывлао::воавораво
т.е. мне нужно вытащить дату и по этой дате сортировать...
т.е. выводить в начале наибольшую дату, а затем меньшую
и наоборот, т.е. по возрастанию и убыванию.... нужна сортировка таким образом.
Ща понятно?
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Как я понимаю PHP тут не поможет, надо самому алгоритм придумать . Я бы посоветовал перепахать твой текстовик preg_match'ем в массив где в начале будет идти поле по которому хочешь сортировать а потом сделать сортировку массива .
Можно выдергивать в ассоциативный массив а затем делать ksort или krsort, но тут проблема в том что дата может повторятся а вот имя элемента - нет .
__________________
The time was broken ...
сортировка многомерных массивов осуществляется при помощи функции usort(), то есть в твоем случае если имеется массив
$arr = array ( array("12","12/02/2002","влдыл влаов валова","лываоылвоалыва"),
array ("13","31/03/2002","лывоа вылаоывлао","воавораво"));
то сортировать нужно так:
Во первых написать функцию которая будет сравнивать два значения, вот пример функции:
function compare ($a, $b) {
if ($a[1] == $b[1])
return 0;
elseif ($a[1] < $b[1])
return -1;
else
return 1;
}
# далее можно использовать функцию usort();
usort($arr, compare);
__________________
Всегда есть решение.
2 polo
Спасибо большое, попробую!
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Процитировал мануал .
2 ExcErr : Я так и не понял в чем проблема ? Что конкретно не получается ?
__________________
The time was broken ...
Всем спасибо, вопрос снимается :=)
Сделал
как посоветовал polo (за что ему и прибольшое спасибо
)
Правда грабли нашел потом еще одни..
Оказывается у меня сортировка не пахала от того, что у меня массив перегонялся в коде пустой.. Просто не досмотрел этого момента сразу
Вот и начал ковырять...
А формат даты для сортировки поменял на:
годмесдень
т.е. объединил их!
Спасибо всем еще раз!
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
Конечно я так и не понял чем помог поло, это все было в мане . Но ты тоже молодец, получается спросил ерунду .
PS А сортируй лучше в unixtime , проблем будет меньше .
__________________
The time was broken ...
хмм... в мане всегда почти все есть, но вот иной раз не знаешь где найти ответ, если исходить из этого то на почти все вопросы форума можно отвечать "поищи в мане, там есть".
Кстати о датах, верно отмеченно, лучше перевести в секунды, так меньше писанины и удобнее работать.
__________________
Всегда есть решение.
Не но тут странно : если надо работать с массивом логично что надо смотреть раздел array functions . Неправда ли ?!
Т.е. я не согласен что все нужно найти в мане . Ну вот к примеру вопросы : "Как отправлять встроенные в письмо изображения" или "Как перевести многомерный массив в одномерный" в мане не найти .
Хотя Polo , отчасти ты и прав .
PS Надо закрыть тему а то флудим , почем зря .
__________________
The time was broken ...
Нет, вряд-ли флудим, вопрос даже по теме, а то по моему лучщий вопрос для обсуждения (пхп), а раздел пустует.
__________________
Всегда есть решение.
RaZeR
Я же уже отметил, что была моя ошибка.
Просто передавал пустой массив и ни один вариант сортировки не пахал.
И из-за того что не досмотрел тот момент бросился распрашивать народ, что и почему.. А тихо и спокойно посидев над кодом продебагив его нашел грабли.
Поло чем помог? Да тем, что дал более четкое описание сортировки нежеле в том мане, который у меня есть, вот и все.
По поводу дыты согласен можно и так.. Но у меня в принципе это не столь принципиально.. Так как я сортирую всего навсего по дню мес и году.
Тут не важно какая данные пойдут первыми.. Если в это день то тут нет разницы что что-то должно обязательно быть первым, а что вторым. Тут стоял вопрос по дате, а не по дате и времени. Если бы как я сказал второй вариант, то да, тут было бы принципиально уже.
А дата типа 200210, не может быть больше 20021029, или может я опять ошибаюсь?
Спасибо еще раз всем!
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
| Формат времени GMT. Текущее время 13:20. | Страницы (2): [1] 2 » Показаны 19 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.