отсортировать массив дат от самой маленькой даты на php - PullRequest
0 голосов
/ 23 июня 2018

Мне нужно отсортировать массив по наименьшей дате.Я использовал Usort, но он упорядочил массив, учитывая только день.Я попытался использовать код из примера, используя сортировку в JavaScript, но мне нужно, чтобы это произошло в PHP или найти способ конвертировать массив PHP в JS.

Вот код:

<?php
          ArrayDates ( [0] => 22/03/2018 [1] => 09/04/2018 [2] => 26/03/2018 
          [3] => 27/11/2017 [4] => 22/01/2018 [5] => 06/09/2017 )
?>
           <script>
           ArrayDates.sort(function (a, b){
                var aa = a.split('-'),
                    bb = b.split('-');

                return aa[2] - bb[2] || aa[1] - bb[1] || aa[0] - bb[0];
            })
          </script>

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Это позволит отсортировать массив дат в порядке возрастания.

$date = array('23-02-2012','21-01-2014','11-01-2010','09-02-2001','01-01-2019');  

function date_sort($a, $b) {
    return strtotime($a) - strtotime($b);
}

usort($date, "date_sort");

print_r($date);

Вывод: -

Array ( 
         [0] => 09-02-2001 
         [1] => 11-01-2010 
         [2] => 23-02-2012 
         [3] => 21-01-2014 
         [4] => 01-01-2019 
      )
0 голосов
/ 23 июня 2018

Привет, наконец, я нашел решение на форуме и, возможно, могу помочь кому-то еще.Решение - создать новый массив временных меток на основе исходного массива.Затем отсортируйте этот новый массив.После просто введите первый элемент нового массива с «date» и вернет первую дату.Вот код:

  <?php
            $ArrayDates= array ('22/03/2018','09/04/2018', '26/03/2018', 
            '27/11/2017','22/01/2018', '06/09/2017');

            function date_to_timestamp($d){
                $newarr = array();
                foreach($d as $f) {
                $arr=explode("/",$f);
                array_push($newarr, mktime(0,0,0,$arr[0],$arr[1],$arr[2]));
                }

                return $newarr;
            } 

            function cmp2($a, $b)
                {
                if ($a == $b) {
                return 0;
                }
                return ($a < $b) ? -1 : 1;
            }

            $third = date_to_timestamp($ArrayDates);

            usort($third, "cmp2");

            echo date('m/d/Y', $third[0]);
  ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...