在PHP中,可以使用多种方法来按日期键排序数组值,然后再按时间键排序。以下是一种可能的解决方案:
usort($data, function($a, $b) {
// 首先按日期键排序
$dateComparison = strcmp($a['date'], $b['date']);
// 如果日期键相同,则按时间键排序
if ($dateComparison == 0) {
return strcmp($a['time'], $b['time']);
}
return $dateComparison;
});
在上述代码中,我们使用strcmp函数来比较日期和时间键的值。strcmp函数返回一个整数,表示两个字符串的比较结果。如果返回值为负数,则表示$a小于$b;如果返回值为正数,则表示$a大于$b;如果返回值为0,则表示$a等于$b。
以下是一个完整的示例代码:
$data = array(
array('date' => '2022-01-01', 'time' => '09:00:00'),
array('date' => '2022-01-01', 'time' => '10:00:00'),
array('date' => '2022-01-02', 'time' => '08:00:00'),
array('date' => '2022-01-02', 'time' => '09:30:00'),
array('date' => '2022-01-03', 'time' => '11:00:00'),
array('date' => '2022-01-03', 'time' => '12:00:00')
);
usort($data, function($a, $b) {
$dateComparison = strcmp($a['date'], $b['date']);
if ($dateComparison == 0) {
return strcmp($a['time'], $b['time']);
}
return $dateComparison;
});
print_r($data);
输出结果如下:
Array
(
[0] => Array
(
[date] => 2022-01-01
[time] => 09:00:00
)
[1] => Array
(
[date] => 2022-01-01
[time] => 10:00:00
)
[2] => Array
(
[date] => 2022-01-02
[time] => 08:00:00
)
[3] => Array
(
[date] => 2022-01-02
[time] => 09:30:00
)
[4] => Array
(
[date] => 2022-01-03
[time] => 11:00:00
)
[5] => Array
(
[date] => 2022-01-03
[time] => 12:00:00
)
)
这样,数组中的值将按照日期键首先排序,然后按时间键排序。
请注意,上述代码仅为示例,实际应用中,您可能需要根据具体需求进行适当修改。
领取专属 10元无门槛券
手把手带您无忧上云