我有一个对象数组,其日期范围来自两个字段。
array(2) {
[0]=>
array(12) {
["id"]=>
string(2) "19"
["date_start"]=>
string(19) "2018-01-15 00:00:00"
["date_end"]=>
string(19) "2018-01-16 00:00:00"
["promo_name"]=>
string(19) "Promo 1"
}
[1]=>
array(12) {
["id"]=>
string(2) "18"
["date_start"]=>
string(19) "2018-01-16 00:00:00"
["date_end"]=>
string(19) "2018-01-19 00:00:00"
["promo_name"]=>
string(34) "Promo 2"
}
}
我想从数组列表中找到第一个date_start和last_end。从这两个值开始,我想使用DatePeroid,这样我就可以在这两个值之间获得另一个日期列表。
function sortFunction( $a, $b ) {
return strtotime($a["date_start"]) - strtotime($b["date_start"]);
}
usort($query, "sortFunction");
我现在已经通过date_start对它们进行了排序,但是没有完成逻辑以获得最后的结束日期。
不确定如何以最佳方式进行。
答案 0 :(得分:0)
使用数组缩减的示例:
$result = array_reduce($query, function ($a, $i) {
if (strtotime($i['date_start']) < strtotime($a['date_start'])) {
$a['date_start'] = $i['date_start'];
}
if (strtotime($i['date_end']) > strtotime($a['date_end'])) {
$a['date_end'] = $i['date_end'];
}
return $a;
}, $query[0]);
echo $result['date_start'], ' - ', $result['date_end'];