Cheizer
@Cheizer

Как на PHP вывести только одну запись попадающую под условие?

Приветствую, помогите разобраться с php, небольшой совсем опыт. Не могу понять как сделать.
Есть массив, в нем есть поля date1, date2, published, с которыми работаю для выборки

[date1] =2023-01-02 22:55:00
[date2] = 2023-01-16 22:56:00
[published] = 1

В цикле на php получаю все записи где published==1 и date1 больше текущей даты. Это вроде получилось, но записей таких несколько, и не могу понять как вывести только первую запись подходящую под условие?

Если проверяю через счетчик первую итерацию цикла, и делаю break, то если первая запись из списка не попадает под условие например published не равно 1 то вообще ничего не выводиться. Как правильно написать это условие?

$to = date('Y-m-d', time());
 $today = new DateTime($to);
 $i = 0;
 
 foreach($array as $key => $val) {
 $date1 = date('Y-m-d', strtotime($val['date1']));
 $date1 = new DateTime($date1);

if($date1 > $today AND $val['published'] ==1){
    echo $val['published'].'-'.date('Y-m-d', strtotime($val['date1'])).'<br>';
}
 if (++$i == 2) break;
}


Вот массив:
Array
(
    [0] = Array
        (
            [MIGX_id] = 4
            [date1] =2023-01-02 22:55:00
            [date2] = 2023-01-16 22:56:00
            [price] = <p>12121212</p>
            [published] =
        )

    [1] = Array
        (
            [MIGX_id] = 3
            [date1] = 2023-01-16 02:52:00
            [date2] = 
            [price] = <p>222222</p>
            [published] = 1
        )

    [2] = Array
        (
            [MIGX_id] = 1
            [date1] = 2023-01-20 22:55:00
            [date2] = 2023-01-31 22:56:00
            [price] = <p>12121212</p>
            [published] = 1
        )

    [3] = Array
        (
            [MIGX_id] = 2
            [date1] = 2023-02-17 22:55:00
            [date2] = 2023-02-28 03:02:00
            [price] = <p>12121212</p>
            [published] = 1
        )
)
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
Вы можете использовать break в цикле без использования счетчика, по постановке задачи он там ни к чему.
Ваш код, если убрать оттуда счетчик
$to = date('Y-m-d', time());
$today = new DateTime($to);

foreach ($array as $key => $val) {
    $date1 = date('Y-m-d', strtotime($val['date1']));
    $date1 = new DateTime($date1);

    if ($date1 > $today and $val['published'] == 1) {
        echo $val['published'] . '-' . date('Y-m-d', strtotime($val['date1'])) . '<br>';
        break;
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
22 мая 2024, в 14:48
45000 руб./за проект
22 мая 2024, в 14:46
1111 руб./за проект
22 мая 2024, в 14:39
10000 руб./за проект