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

Форум PHP

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

 

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

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

тема: Ближайшая дата
 
 автор: sidPR   (18.01.2011 в 17:18)   письмо автору
 
 

Здравствуйте :) подскажите как сделать лучше
есть массив
Array ( [0] => 13.12.2010 19:00:00 [1] => 24.12.2010 19:00:00 [2] => 27.12.2010 19:00:00 [3] => 13.01.2011 19:00:00 [4] => 17.01.2011 19:00:00 [5] => 24.01.2011 19:00:00 [6] => 27.01.2011 19:00:00 )

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

  Ответить  
 
 автор: DJ Paltus   (18.01.2011 в 17:30)   письмо автору
 
   для: sidPR   (18.01.2011 в 17:18)
 

Ну, мне кажется, что надо каждую перевести в unix-стандарт при помощи того же strtotime(), затем взять текущий таймстемп и поотнимать его от полученных. Где разница меньше, тот и победил.
Но я могу говорить глупости.

  Ответить  
 
 автор: Лена   (18.01.2011 в 17:39)   письмо автору
 
   для: sidPR   (18.01.2011 в 17:18)
 

Я бы тоже перевела в unix, выбрала бы в массиве все элементы, которые больше сегодняшнего числа и дальше среди выбранных выбрала бы самое минимальное значение.

  Ответить  
 
 автор: Trianon   (18.01.2011 в 18:35)   письмо автору
 
   для: sidPR   (18.01.2011 в 17:18)
 

достаточно перевести в восточный формат (тот что в MySQL задействован),
как можно будет отсортитровать и отделить всё что раньше сегодня/сейчас.
С unixtime связываться необязательно, а если в массиве могут быть моменты выходящие за поддержанный unixtime-диапазон, то и недопустимо.

  Ответить  
 
 автор: sim5   (19.01.2011 в 02:41)   письмо автору
 
   для: sidPR   (18.01.2011 в 17:18)
 

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

Это означает будущее время, а таковое может быть только в том случае, если у вас загодя прописаны даты на год/годы вперед/назад. А коли они прописаны, то логично ожидать в данном массиве и дату текщую. Коли она там есть, то какая проблема найти эту дату поиском в масиве, получив индекс этого значения? Следующий индекс вернет искомое.

  Ответить  
 
 автор: sidPR   (19.01.2011 в 15:34)   письмо автору
 
   для: sim5   (19.01.2011 в 02:41)
 

сделал так

function nexday($arr)
{
    $now = strtotime("now");
    foreach ($arr as $value) {
        if(strtotime($value) > $now){
            $arr2[] = $value;
        }
    }
    $max = max($arr2);
    return $max;
}

покатит ?

  Ответить  
 
 автор: Trianon   (19.01.2011 в 15:43)   письмо автору
 
   для: sidPR   (19.01.2011 в 15:34)
 

foreach ($arr as $value) {
if(strtotime($value)

разве для даты в таком формате применима функция strtotime() ?

  Ответить  
 
 автор: sim5   (19.01.2011 в 15:54)   письмо автору
 
   для: sidPR   (19.01.2011 в 15:34)
 

Меня вообще-то интересовал совсем иной вопрос. Если у вас все таки есть дата текущая в массиве, то никаких преборазований, циклов и сравнений не надо. Если нет даты текущей, но массив представляет закономерность некую, например, даты по интервалу, то тоже не потребуется никаких преобразований, циклов, сравнений.
Если же даты "от потолка", то наверное все-таки нужно представлять их в формате, который бы позволял производить сравения, а уж представить их в каком либо формате для вывода, это уже второстепенное.
Если этот массив дат результат выборки из базы, то не понятно почему необходимое не получено сразу.

  Ответить  
 
 автор: sidPR   (19.01.2011 в 16:02)   письмо автору
 
   для: sim5   (19.01.2011 в 15:54)
 

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

  Ответить  
 
 автор: sim5   (19.01.2011 в 16:04)   письмо автору
 
   для: sidPR   (19.01.2011 в 16:02)
 

Хаотичность, это понятие резиновое. Есть сортировки массива. Если уж вы держите даты в массиве (исключая базу), то храните их в удобоваримом формате, и лишних проблем не будет.
То что вы написали не годится.

  Ответить  
Rambler's Top100
вверх

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