FOREACH with a DATE COMPARE condition (PHP)
This function iterates through the events data, looking for events whose from and to dates surround the given date:
function find_events($events, $date) { $date = new DateTime($date); foreach ($events as $event) { $from = (new DateTime($event['timeFrom']))->setTime(0,0,0); $to = (new DateTime($event['timeTo']))->setTime(0,0,0); if ($date >= $from && $date <= $to) { echo "{$event['title']} ({$event['listText']}) from {$event['timeFrom']} to {$event['timeTo']}\n"; } }}$events = json_decode($json, true);find_events($events, '2019-11-17');
Output:
event 1 (text of the event) from 2019-11-16 19:00:00 to 2019-11-18 22:00:00 event 3 (text of the event) from 2019-11-17 19:00:00 to 2019-11-17 22:00:00
Try this code:
$date = "2019-11-17";$events = json_decode($json_output, true);foreach ($events as $event){ if (($date > $event['timeFrom'] && $date < $event['timeTo']) || in_array($date, array($event['timeFrom'], $event['timeTo']))) { $filtered_events[] = $event; }}$sliced_events = array_slice($filtered_events, 0, 9);print_r($sliced_events);