@Triglav77

Неверная выборка из массива по датам. Почему?

Подскажите пожалуйста что неверно. Есть массив с данными и датами, с такой структурой

"num"=>"0003000000006739"
 "qr_code"=>"18826807734421200000"
  "entry_date"=>"23.03.2019 16:43"

"num"=>"0003000000006739"
 "qr_code"=>"18826807734421200000"
  "entry_date"=>"23.04.2019 16:43"

"num"=>"0003000000006739"
 "qr_code"=>"18826807734421200000"
  "entry_date"=>"23.05.2019 16:43"


Пытаюсь выбрать только те данные которые входят в нужный диапазон например за апрель (23.04.2019)

Делаю так
$timestamp1 = strtotime($START_DATE);
$timestamp2 = strtotime($END_DATE);

// перебираю массив
for ($i = 0; $i < $object_list['counts']; $i++) {
// проверяю выполняется условие по дате
            if ($timestamp1 <= $timestamp2) {
// если да то записываю в новый массив и увеличиваю дату
$timestamp1 += 60 * 60 * 24;
}

        }


Однако условие выполняется с точностью до наоборот. Выводятся только даты не попадающие в диапазон
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
s_panteleev
@s_panteleev
25 yo, Yaroslavl
Как то так

<?php

$START_DATE = "01.04.2019";
$END_DATE = "31.04.2019";

$object_list = [
    [
        "num" => "0003000000006739",
        "qr_code" => "18826807734421200000",
        "entry_date" => "23.03.2019 16:43",
    ],
    [
        "num" => "0003000000006739",
        "qr_code" => "18826807734421200000",
        "entry_date" => "23.04.2019 16:43",
    ],
    [
        "num" => "0003000000006739",
        "qr_code" => "18826807734421200000",
        "entry_date" => "23.05.2019 16:43"
    ]
];


$ts_from = strtotime($START_DATE);
$ts_to = strtotime($END_DATE);

foreach ($object_list as $item) {
    $ts = strtotime($item['entry_date']);

    if ($ts > $ts_from && $ts <= $ts_to) {
        echo '<pre style="color: red;">', print_r($item, true), '</pre>';
    }
}

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы