Спустя 15 минут, 18 секунд (18.02.2011 - 19:43) Dron19 написал(а):
Вариант без сортировки
$arr = array('2001.05.02 18:28:17','2010.07.28 18:15:05','2010.06.28 18:15:05','2012.06.28 18:15:05','2012.06.28 18:15:04');
$now_date = date('YmdHis');
$size = sizeof($arr);
for($i = 0; $i < $size; $i++) {
$new_format = preg_replace('#([0-9]+?)\.([0-9]+?)\.([0-9]+?)\s([0-9]+?):([0-9]+?):([0-9]+?)#i',
'$1$2$3$4$5$6',$arr[$i]);
if($new_format >= $now_date) $array[] = $arr[$i];
}
Спустя 1 час, 7 минут, 5 секунд (18.02.2011 - 20:50) Dron19 написал(а):
Ну в общем написал я функцию за тебя, по сколько писал сразу, не обдумывая как ее реализовать, получилась сложная в применении функция. Короче, что бы она сработала правильно, нужно сначала создать переменную с вызовом этой функции, в качестве параметра ей передать массив который хочешь отсортировать, затем вызвать вторую функцию и поместить результат ее работы в туже переменную, в которой был результат первой функции, в общем без второй функции произойдет сортировка только один раз каждого элемента...
В общем смотри на пример, главное посмотри как я вызываю эти функции и все...
Кстати, похоже я создал свой велосипед...
Этот пример выведет
Array ( [0] => 2011.08.12 15:18:06 [1] => 2012.05.12 15:18:04
[2] => 2012.05.12 15:18:05 [3] => 2012.05.12 15:18:06 [4] => 2012.05.12 15:18:07 [5] => 2021.05.12 15:18:07 ) 1
Как тебе и надо было, отсортированный вид массива. Главное запомни как пользоваться
В общем смотри на пример, главное посмотри как я вызываю эти функции и все...
Кстати, похоже я создал свой велосипед...
function del_and_sort($arr) {
if(is_array($arr)) {
$now_date = date('YmdHis');
$size = sizeof($arr);
for($i = 0; $i < $size; $i++) {
$new_format = preg_replace('#([0-9]+?)\.([0-9]+?)\.([0-9]+?)\s([0-9]+?):([0-9]+?):([0-9]+?)#i',
'$1$2$3$4$5$6',$arr[$i]);if($new_format >= $now_date) $array[] = $arr[$i];}
$new_format = preg_replace('#([0-9]+?)\.([0-9]+?)\.([0-9]+?)\s([0-9]+?):([0-9]+?):([0-9]+?)#i',
'$1$2$3$4$5$6',$array);
$size = sizeof($new_format);
for($i = 0; $i < $size; $i++) {
if(($i + 1) == $size) continue;
if($new_format[$i] > $new_format[$i+1]) {
$one_prev_val = $array[$i];
$one_next_val = $array[$i+1];
$array[$i] = $one_next_val;
$array[$i+1] = $one_prev_val;}
}return $array;}else {return false;}}function end_step($arrx) {
$s = sizeof($arrx);
for($i = 0; $i < $s; $i++) {
$arrx = del_and_sort($arrx);
}return $arrx;}
$arr = array('2011.08.12 15:18:06','2001.05.12 15:18:07','2021.05.12 15:18:07',
'2012.05.12 15:18:07','2012.05.12 15:18:06','2012.05.12 15:18:04','2012.05.12 15:18:05');
$arrx = del_and_sort($arr);
$arrx = end_step($arrx);
echo print_r($arrx) . "<br>";
Этот пример выведет
Array ( [0] => 2011.08.12 15:18:06 [1] => 2012.05.12 15:18:04
[2] => 2012.05.12 15:18:05 [3] => 2012.05.12 15:18:06 [4] => 2012.05.12 15:18:07 [5] => 2021.05.12 15:18:07 ) 1
Как тебе и надо было, отсортированный вид массива. Главное запомни как пользоваться
Спустя 4 минуты, 57 секунд (18.02.2011 - 20:55) inpost написал(а):
$now = date("Y.m.d H:i:s");А теперь любая сортировка нужная: sort, asort и т.д. =)
foreach($array as $k => $v)
if($v > $now)
unset($array[$k]);
Спустя 2 минуты, 5 секунд (18.02.2011 - 20:58) Dron19 написал(а):
не получится так
у тебя элементы будут уползать
вот ты удалишь к примеру 1 и 2 элемент
и у тебя будет массив начинаться с 3го элемента
у тебя элементы будут уползать
вот ты удалишь к примеру 1 и 2 элемент
и у тебя будет массив начинаться с 3го элемента
Спустя 1 минута, 16 секунд (18.02.2011 - 20:59) Dron19 написал(а):
и вообще как у тебя не получится, у тебя сравнение по годам идет
Спустя 2 минуты, 33 секунды (18.02.2011 - 21:01) Dron19 написал(а):
у тебя не правильно сортирует
выводит только одно значение
$now = date("Y.m.d H:i:s");
$array2 = array('2011.08.12 15:18:06','2001.05.12 15:18:07','2021.05.12 15:18:07','2012.05.12 15:18:07','2012.05.12 15:18:06','2012.05.12 15:18:04','2012.05.12 15:18:05');
foreach($array2 as $k => $v)
if($v > $now)
unset($array2[$k]);
sort($array2);
reset($array2);
echo print_r($array2) . "<br><br>";
выводит только одно значение
Спустя 1 минута, 8 секунд (18.02.2011 - 21:02) Dron19 написал(а):
он у тебя удаляет все, кроме 2001.05.12 15:18:07, как раз того, чего тут и не должно было быть
Спустя 19 минут, 4 секунды (18.02.2011 - 21:22) inpost написал(а):
Dron19
Внимательно условие читай. Ответ на него я дал уже.
Внимательно условие читай. Ответ на него я дал уже.
Спустя 17 секунд (18.02.2011 - 21:22) YVSIK написал(а):
хоть это и ве-ло-си пед
эту функцию я собственн давно давно намечал написать
и она мне ну очень пригодиться
вот так что ваш труд не зря; не зря
спа-си-бо !
кода дойду до этого тогда и буду разбирать !
щас пока не время !
эту функцию я собственн давно давно намечал написать
и она мне ну очень пригодиться
вот так что ваш труд не зря; не зря
спа-си-бо !
![wink.gif](http://phpforum.ru/html/emoticons/wink.gif)
![wink.gif](http://phpforum.ru/html/emoticons/wink.gif)
кода дойду до этого тогда и буду разбирать !
щас пока не время !
Спустя 19 секунд (18.02.2011 - 21:22) Dron19 написал(а):
Во блин, я не правильно понял вопроса, и сделал все наоборот
. Из массива удаляются все даты, которые уже мы прожили и оставшиеся сортируются
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 24 минуты, 5 секунд (18.02.2011 - 21:46) inpost написал(а):
Dron19
Если надо наоборот (как ты думаешь), то достаточно поменять знак < на > в условии: if($v > $now)
Если надо наоборот (как ты думаешь), то достаточно поменять знак < на > в условии: if($v > $now)
Спустя 4 минуты, 4 секунды (18.02.2011 - 21:50) Dron19 написал(а):
inpost, это в твоем скрипте, а я то уже настрочил
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 3 минуты, 30 секунд (18.02.2011 - 21:54) Dron19 написал(а):
Цитата (YVSIK @ 18.02.2011 - 18:22) |
хоть это и ве-ло-си пед эту функцию я собственн давно давно намечал написать и она мне ну очень пригодиться вот так что ваш труд не зря; не зря спа-си-бо ! ![]() ![]() кода дойду до этого тогда и буду разбирать ! щас пока не время ! |
лучше свой уже напиши, потому что у меня вообще фуфло получилось, много лишних действий, хоть и работает
Спустя 1 час, 34 минуты, 13 секунд (18.02.2011 - 23:28) Snus написал(а):
inpost все правильно написал. Только я бы дополнил.
$now = time();
foreach($array as $k => $v){
if(strtotime($v) > $now) unset($array[$k]);
}
rsort($array);