Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中对数组进行排序和修剪_Php_Arrays - Fatal编程技术网

在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']);