найти ближайшую следующую дату из массива в php - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть этот массив, и я хочу найти следующую ближайшую дату для 02/21/2019 и установить, и в качестве следующей даты на моей странице, любая помощь или идея будут оценены

 Array
    (
        [0] => 2019-02-17
        [1] => 02/09/2019
        [2] => 02/23/2019
        [3] => 02/18/2019
        [4] => 02/25/2019
        [5] => 03/04/2019
        [6] => 03/11/2019
        [7] => 03/18/2019
        [8] => 03/25/2019
        [9] => 04/01/2019
        [10] => 04/08/2019
    )

Ответы [ 4 ]

0 голосов
/ 22 июля 2019

Я предполагаю, что вы можете исправить формат массива и сделать его таким же

$dates = array
                            (
                                '0'=> "2013-02-18",
                                '1'=> "2013-02-12",
                                '2'=> "2013-02-05",
                                '3'=> "2013-01-29",
                                '4'=> "2013-01-27"
                            );


                        $current = date("Y-m-d");
                        //$count = 0;
                        foreach($dates as $day)
                        {
                            //$interval[$count] = abs(strtotime($date) - strtotime($day));
                            $interval[] = abs(strtotime($current) - strtotime($day));
                            //$count++;
                        }                   
                        asort($interval);
                        $closest = key($interval);                       
                        echo trim($datarray[$closest]);
0 голосов
/ 16 февраля 2019

Пожалуйста, посмотрите это решение.Надеюсь, что эта помощь

<?php 

$search = strtotime('02/21/2019');
$arrValues = array
    (
        '2019-02-17',
        '02/09/2019',
        '02/23/2019',
        '02/18/2019',
        '02/25/2019',
        '03/04/2019',
        '03/11/2019',
        '03/18/2019',
        '03/25/2019',
        '04/01/2019',
         '04/08/2019',
    );

    foreach($arrValues as $val) {


        $newArr[] = strtotime($val);


    }


    function getClosest($search, $arr) {
       $closest = null;
       foreach ($arr as $item) {
        if($search <= $item) {

          if ($closest === null || abs($search - $closest) > abs($item - $search)) {
             $closest = $item;
          }
          }

       }
       return $closest;
    }



    $closest = getClosest($search, $newArr);

    echo date('Y-m-d', $closest);



?>
0 голосов
/ 17 февраля 2019

Это решение, которое я использовал для нахождения ближайшей следующей даты для моей программы, и оно работает.

   $date = '02/21/2019';
   $allDates= array
    (
        '2019-02-17',
        '02/09/2019',
        '02/23/2019',
        '02/18/2019',
        '02/25/2019',
        '03/04/2019',
        '03/11/2019',
        '03/18/2019',
        '03/25/2019',
        '04/01/2019',
         '04/08/2019',
    );    
   function date_sort($a, $b) {
        return strtotime($a) - strtotime($b);
    }
    usort($allDates, "date_sort");
    foreach ($allDates as $count => $dateSingle) {
        if (strtotime($date) < strtotime($dateSingle))  {
            $nextDate = date('m-d', strtotime($dateSingle));
            break;
        }
    }
echo $nextDate;
0 голосов
/ 16 февраля 2019

Преобразование даты в unix-время и сравнение чисел.Я не проверял, просто идея ...

Сортировать элементы массива по порядку, а затем выбрать следующий ближайший к вам элемент (элемент)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...