在php中对数组进行排序和修剪
此代码输出以下数组在php中对数组进行排序和修剪,php,arrays,Php,Arrays,此代码输出以下数组 $upcoming = $event_date[0]['event_dates']; 我使用以下方法成功地仅隔离了[event\u date]值: $event_dates = array_column($upcoming, 'event_date'); 这个输出 Array ( [0] => 2020-02-20 00:00:00 [1] => 2020-02-15 00:00:00 [2] => 2020-02-26 00:
$upcoming = $event_date[0]['event_dates'];
我使用以下方法成功地仅隔离了[event\u date]
值:
$event_dates = array_column($upcoming, 'event_date');
这个输出
Array
(
[0] => 2020-02-20 00:00:00
[1] => 2020-02-15 00:00:00
[2] => 2020-02-26 00:00:00
)
我可以像这样输出第一个键
$date = $event_dates[0];
我还需要做一些其他的事情:
- 按日期对数组进行排序<代码>2020-02-15 00:00:00应位于列表的顶部
- 检查事件日期是否存在李>
$dates = [
[
'event_date' => '2020-02-20 00:00:00',
'event_start_timet_date' => '09:14:00',
'event_end_time' => '13:14:00',
],
[
'event_date' => '2020-02-15 00:00:00',
'event_start_timet_date' => '09:15:00',
'event_end_time' => '11:15:00',
],
[
'event_date' => '2020-02-26 00:00:00',
'event_start_timet_date' => '14:15:00',
'event_end_time' => '18:15:00',
],
];
usort($dates, function(array $a, array $b) {
if (!isset($a['event_date']) || !isset($b['event_date'])) {
return 0;
}
return $a['event_date'] <=> $b['event_date'];
});
$dates=[
[
“事件日期”=>“2020-02-20 00:00:00”,
“事件开始时间日期”=>“09:14:00”,
“事件结束时间”=>“13:14:00”,
],
[
“事件日期”=>“2020-02-15 00:00:00”,
“事件开始时间日期”=>“09:15:00”,
“事件结束时间”=>“11:15:00”,
],
[
“事件日期”=>“2020-02-26 00:00:00”,
“事件开始时间日期”=>“14:15:00”,
“事件结束时间”=>“18:15:00”,
],
];
usort($日期,函数(数组$a,数组$b){
如果(!isset($a['event_date'])| |!isset($b['event_date'])){
返回0;
}
返回$a['event_date']$b['event_date'];
});
或者,如果您知道“event_date”将出现在该数组中(并且您有PHP7.4),那么您可能想试试这个
usort($dates, fn(array $a, array $b): int => $a['event_date'] <=> $b['event_date']);
usort($dates,fn(数组$a,数组$b):int=>$a['event\u date']]$b['event\u date']);
asort($event\u dates);将第一次输出'2020-02-15 00:00:00'。太棒了!是否有方法将isset添加到此:$event\u dates=array\u column($coming,'event\u date')
当event\u date
不可用时,这部分代码会抛出一个错误:array\u column()期望参数1为array,如果给定空值
,那么,在这种情况下,看看docu:中的示例4,但我认为最简单的方法是在usort
函数中使用isset
。我已经调整了代码,不使用数组\u列
。是否有方法将isset
与第一个值usort
一起使用?当$dates
中没有值时,我会出现以下错误:usort()希望参数1是数组,如果给定空值
这是什么意思?我不明白那个问题usort()
需要一个数组。如果传递空值,则会出现错误。谢谢,我已将代码包装在isset
中,以检查event\u dates
是否存在。在这种情况下,事件日期
很少不可用-但我希望有一个备份以防万一!谢谢你的帮助!
usort($dates, fn(array $a, array $b): int => $a['event_date'] <=> $b['event_date']);