|
|
|
| Здравствуйте :) подскажите как сделать лучше
есть массив
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 )
я него нужно выбрать ближайшую дату после сегодняшнего числа.. | |
|
|
|
|
|
|
|
для: sidPR
(18.01.2011 в 17:18)
| | Ну, мне кажется, что надо каждую перевести в unix-стандарт при помощи того же strtotime(), затем взять текущий таймстемп и поотнимать его от полученных. Где разница меньше, тот и победил.
Но я могу говорить глупости. | |
|
|
|
|
|
|
|
для: sidPR
(18.01.2011 в 17:18)
| | Я бы тоже перевела в unix, выбрала бы в массиве все элементы, которые больше сегодняшнего числа и дальше среди выбранных выбрала бы самое минимальное значение. | |
|
|
|
|
|
|
|
для: sidPR
(18.01.2011 в 17:18)
| | достаточно перевести в восточный формат (тот что в MySQL задействован),
как можно будет отсортитровать и отделить всё что раньше сегодня/сейчас.
С unixtime связываться необязательно, а если в массиве могут быть моменты выходящие за поддержанный unixtime-диапазон, то и недопустимо. | |
|
|
|
|
|
|
|
для: sidPR
(18.01.2011 в 17:18)
| | >выбрать ближайшую дату после сегодняшнего числа..
Это означает будущее время, а таковое может быть только в том случае, если у вас загодя прописаны даты на год/годы вперед/назад. А коли они прописаны, то логично ожидать в данном массиве и дату текщую. Коли она там есть, то какая проблема найти эту дату поиском в масиве, получив индекс этого значения? Следующий индекс вернет искомое. | |
|
|
|
|
|
|
|
для: 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;
}
|
покатит ? | |
|
|
|
|
|
|
|
для: sidPR
(19.01.2011 в 15:34)
| | foreach ($arr as $value) {
if(strtotime($value)
разве для даты в таком формате применима функция strtotime() ? | |
|
|
|
|
|
|
|
для: sidPR
(19.01.2011 в 15:34)
| | Меня вообще-то интересовал совсем иной вопрос. Если у вас все таки есть дата текущая в массиве, то никаких преборазований, циклов и сравнений не надо. Если нет даты текущей, но массив представляет закономерность некую, например, даты по интервалу, то тоже не потребуется никаких преобразований, циклов, сравнений.
Если же даты "от потолка", то наверное все-таки нужно представлять их в формате, который бы позволял производить сравения, а уж представить их в каком либо формате для вывода, это уже второстепенное.
Если этот массив дат результат выборки из базы, то не понятно почему необходимое не получено сразу. | |
|
|
|
|
|
|
|
для: sim5
(19.01.2011 в 15:54)
| | разбросанны именно в таком формате и могут быть в хоотичном.. поэтому мне нужно както находить из всех дат самую приближенную к сегодняшнему дню | |
|
|
|
|
|
|
|
для: sidPR
(19.01.2011 в 16:02)
| | Хаотичность, это понятие резиновое. Есть сортировки массива. Если уж вы держите даты в массиве (исключая базу), то храните их в удобоваримом формате, и лишних проблем не будет.
То что вы написали не годится. | |
|
|
|