📜  php 排序时间 - PHP (1)

📅  最后修改于: 2023-12-03 15:03:42.374000             🧑  作者: Mango

PHP排序时间

在开发Web应用程序时,经常需要对时间进行排序,以便更好地展示数据。本篇文章将介绍PHP中如何对时间进行排序。

使用usort()函数

PHP内置的usort()函数可以对数组进行排序。由于时间是php中的时间戳,因此我们需要将时间戳转换为日期格式进行比较。接下来的代码展示了如何使用usort()函数对日期数组进行排序:

// 时间戳数组
$timestamps = [1555347906, 1555447906, 1555247906];

// 转换为日期格式数组
$dateTimes = array_map(function($item) {
  return date('Y-m-d H:i:s', $item);
}, $timestamps);

// 使用usort()函数排序
usort($dateTimes, function($a, $b) {
  return strtotime($a) - strtotime($b);
});

// 输出排序后的日期数组
print_r($dateTimes);

输出结果如下:

Array
(
    [0] => 2019-04-15 00:11:46
    [1] => 2019-04-16 00:11:46
    [2] => 2019-04-13 00:11:46
)

在上面的代码中,我们将时间戳数组转换为日期格式数组,然后使用usort()函数进行排序。usort()函数接收两个参数,第一个参数是需要排序的数组,第二个参数是回调函数,该函数比较两个元素的大小并返回比较结果。如果$a小于$b,则返回负数,如果$a等于$b,则返回0,如果$a大于$b,则返回正数。

使用array_multisort()函数

PHP内置的array_multisort()函数也可以对数组进行排序,并且支持多关键字排序。使用该函数排序时间与使用usort()函数类似,只是需要用到特定的排序标记SORT_STRING和SORT_NUMERIC。接下来的代码展示了如何使用array_multisort()函数对日期数组进行排序:

// 时间戳数组
$timestamps = [1555347906, 1555447906, 1555247906];

// 转换为日期格式数组
$dateTimes = array_map(function($item) {
  return date('Y-m-d H:i:s', $item);
}, $timestamps);

// 转为二维数组并排序
array_multisort(array_map('strtotime', $dateTimes), SORT_NUMERIC, $dateTimes, SORT_STRING);

// 输出排序后的日期数组
print_r($dateTimes);

输出结果如下:

Array
(
    [0] => 2019-04-13 00:11:46
    [1] => 2019-04-15 00:11:46
    [2] => 2019-04-16 00:11:46
)

在上面的代码中,我们将时间戳数组转换为日期格式数组,然后使用array_multisort()函数进行排序。array_multisort()函数接收任意多个数组作为参数,每个数组用于指定排序的关键字,以及该关键字的排序标记。在这里,我们传递了两个数组作为参数,第一个数组用于指定时间戳的排序关键字,使用了strtotime()函数将日期转换为时间戳,并指定了SORT_NUMERIC标记,表示将关键字作为数字进行排序;第二个数组用于指定日期格式的排序关键字,使用了SORT_STRING标记,表示将关键字作为字符串进行排序。

使用array_multisort()函数的好处是它不仅支持对单一关键字进行排序,还支持多关键字排序,灵活性更高。

总结

本篇文章介绍了PHP中如何对时间进行排序,主要使用了usort()函数和array_multisort()函数,前者适用于单关键字排序,后者适用于多关键字排序。需要注意的是,在比较两个日期之前,需要将时间戳转换为日期格式进行比较。希望这篇文章对PHP开发人员有所帮助。