<?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'),
],
];
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);
// for programs that run over multiple seconds this makes sure we don't drift during sorting
$now = new \DateTime('now');
// 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);
}
}
- Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- Warning: Undefined variable $now in /in/pFghr on line 25
NULL
array(2) {
[0]=>
array(3) {
["ID"]=>
int(33)
["begin_date"]=>
object(DateTime)#3 (3) {
["date"]=>
string(26) "2015-01-04 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["end_date"]=>
object(DateTime)#4 (3) {
["date"]=>
string(26) "2016-02-29 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
}
[1]=>
array(3) {
["ID"]=>
int(16)
["begin_date"]=>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-01-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["end_date"]=>
object(DateTime)#2 (3) {
["date"]=>
string(26) "2016-11-30 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
}
}
begin_date invalidated ID #33
begin_date invalidated ID #16
- Output for 5.5.14 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.31, 7.4.0 - 7.4.33
- Notice: Undefined variable: now in /in/pFghr on line 25
NULL
array(2) {
[0]=>
array(3) {
["ID"]=>
int(33)
["begin_date"]=>
object(DateTime)#3 (3) {
["date"]=>
string(26) "2015-01-04 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["end_date"]=>
object(DateTime)#4 (3) {
["date"]=>
string(26) "2016-02-29 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
}
[1]=>
array(3) {
["ID"]=>
int(16)
["begin_date"]=>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-01-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["end_date"]=>
object(DateTime)#2 (3) {
["date"]=>
string(26) "2016-11-30 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
}
}
begin_date invalidated ID #33
begin_date invalidated ID #16
- Output for 7.3.32 - 7.3.33
- NULL
array(2) {
[0]=>
array(3) {
["ID"]=>
int(33)
["begin_date"]=>
object(DateTime)#3 (3) {
["date"]=>
string(26) "2015-01-04 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["end_date"]=>
object(DateTime)#4 (3) {
["date"]=>
string(26) "2016-02-29 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
}
[1]=>
array(3) {
["ID"]=>
int(16)
["begin_date"]=>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-01-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["end_date"]=>
object(DateTime)#2 (3) {
["date"]=>
string(26) "2016-11-30 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
}
}
begin_date invalidated ID #33
begin_date invalidated ID #16
- Output for 5.5.0 - 5.5.13
- Notice: Undefined variable: now in /in/pFghr on line 25
NULL
array(2) {
[0]=>
array(3) {
["ID"]=>
int(33)
["begin_date"]=>
object(DateTime)#3 (3) {
["date"]=>
string(19) "2015-01-04 00:00:00"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["end_date"]=>
object(DateTime)#4 (3) {
["date"]=>
string(19) "2016-02-29 00:00:00"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
}
[1]=>
array(3) {
["ID"]=>
int(16)
["begin_date"]=>
object(DateTime)#1 (3) {
["date"]=>
string(19) "2016-01-01 00:00:00"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
["end_date"]=>
object(DateTime)#2 (3) {
["date"]=>
string(19) "2016-11-30 00:00:00"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
}
}
begin_date invalidated ID #33
begin_date invalidated ID #16
preferences:
265 ms | 403 KiB | 330 Q