Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 12小时时钟阵列排序_Php_Arrays_Sorting_Time_Clock - Fatal编程技术网

Php 12小时时钟阵列排序

Php 12小时时钟阵列排序,php,arrays,sorting,time,clock,Php,Arrays,Sorting,Time,Clock,我一直在谷歌上搜索,找不到任何解决方案来按照12小时时钟格式对数组进行排序。我能够通过将24小时时钟转换为时间戳,然后使用krsort对其进行排序。但是我不知道如何分类一个12小时的时钟 下面是该场景的示例 未排序的 array( '0' => '03:00 AM', '1' => '12:00 AM', '2' => '03:00 PM', '3' => '01:00 AM', '4' => '04:00 PM',

我一直在谷歌上搜索,找不到任何解决方案来按照12小时时钟格式对数组进行排序。我能够通过将24小时时钟转换为
时间戳
,然后使用
krsort
对其进行排序。但是我不知道如何分类一个12小时的时钟

下面是该场景的示例

未排序的

array(
    '0' => '03:00 AM',
    '1' => '12:00 AM',
    '2' => '03:00 PM',
    '3' => '01:00 AM',
    '4' => '04:00 PM',
    '5' => '02:00 AM',
    '6' => '12:00 PM',
    '7' => '04:00 AM',
    '8' => '01:00 PM',
    '9' => '02:00 PM'
);
array(
    '0' => '12:00 AM',
    '1' => '01:00 AM',
    '2' => '02:00 AM',
    '3' => '03:00 AM',
    '4' => '04:00 AM',
    '5' => '12:00 PM',
    '6' => '01:00 PM',
    '7' => '02:00 PM',
    '8' => '03:00 PM',
    '9' => '04:00 PM'
);
已排序

array(
    '0' => '03:00 AM',
    '1' => '12:00 AM',
    '2' => '03:00 PM',
    '3' => '01:00 AM',
    '4' => '04:00 PM',
    '5' => '02:00 AM',
    '6' => '12:00 PM',
    '7' => '04:00 AM',
    '8' => '01:00 PM',
    '9' => '02:00 PM'
);
array(
    '0' => '12:00 AM',
    '1' => '01:00 AM',
    '2' => '02:00 AM',
    '3' => '03:00 AM',
    '4' => '04:00 AM',
    '5' => '12:00 PM',
    '6' => '01:00 PM',
    '7' => '02:00 PM',
    '8' => '03:00 PM',
    '9' => '04:00 PM'
);
代码显然是动态工作的,因此无论数组中给定什么时间,它都将按升序或降序排序为12小时时钟,将接受该格式。因此,您可以将自定义排序()与基于strotime的回调一起使用

usort($array, function($a, $b) {
   return (strtotime($a) > strtotime($b));
});