<?php
$data = [
[
'ID' => 16,
'begin_date' => new \DateTime('2016-01-01 UTC'),
'end_date' => new \DateTime('2016-11-30 UTC'),
],
[
'ID' => 33,
'begin_date' => new \DateTime('2015-01-04 UTC'),
'end_date' => new \DateTime('2016-02-29 UTC'),
],
];
// for programs that run over multiple seconds this makes sure we don't drift during sorting
$now = new \DateTime('now');
usort($data, function($a, $b) {
// Note PHP 7 <=> doesn't work on \DateTime
if($a['end_date'] == $b['end_date']) {
return 0;
}
return $a['end_date'] > $b['end_date'] ? 1 : -1;
});
var_dump($now);
var_dump($data);
// pick the first element that meets the criteria
foreach($data as $index => $element) {
if($element['begin_date'] < $now) {
// first condition is invalidated
echo "begin_date invalidated ID #".$element['ID'].PHP_EOL;
continue;
}
else {
var_dump($element);
}
}
preferences:
50.39 ms | 402 KiB | 5 Q