请按索引(日期)对下面的数组进行排序。我想将下面的数组按其日期的ASC顺序排序。在排序后,第一个将是2020-06-29及其数组,然后是2020-06-30,我尝试了更多的排序机制,但它不能解决问题。请帮我解决这个问题
Array(
[2020-07-01] => Array
(
[0] => Array
(
[slot] => 09:00 AM-11:00 AM
[is_available] => 1
[slot_id] => 29
)
)
[2020-06-29] => Array
(
[0] => Array
(
[slot] => 02:16 AM-02:16 AM
[is_available] => 1
[slot_id] => 14
)
)
[2020-06-30] => Array
(
[0] => Array
(
[slot] => 09:00 AM-06:00 PM
[is_available] => 1
[slot_id] => 15
)
)
[2020-07-02] => Array
(
[0] => Array
(
[slot] => 10:00 AM-05:00 PM
[is_available] => 1
[slot_id] => 35
)
)
[2020-07-03] => Array
(
[0] => Array
(
[slot] => 10:00 AM-03:00 PM
[is_available] => 1
[slot_id] => 36
)
)
)发布于 2020-06-29 03:15:12
步骤1:创建一个接受两个日期(字符串)作为参数的函数,如果第一个日期大于第二个日期,则该函数返回1;如果第二个日期>第一个日期,则返回-1;如果两个日期相等,则返回0。函数的工作从步骤2开始。
步骤2:计算字符串,分别得到两个日期的年、月和日。请参阅: https://www.php.net/manual/en/book.tokenizer.php
步骤3:如果第一个日期的年份>第二个日期的年份,则返回1。如果第二个日期年份>第一个日期的年份返回-1,如果它们相等,则转到步骤4。
步骤4:如果第一个日期的月份>第二个日期的月份,则返回1。如果第二个日期月份>第一个日期的月份返回-1,如果它们相等,则转到步骤5。
步骤5:如果第一个日期的日期>第二个日期的日期,则返回1。如果第二个日期的day >第一个日期的day返回-1,如果它们相等,则返回0。
现在使用php的usort函数并在其中传递函数
请参阅: https://www.php.net/usort
发布于 2020-06-29 03:17:57
试试ksort
下面是一个简短的示例:
<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>https://www.php.net/manual/en/function.ksort.php
编辑:
由于ksort似乎不起作用,您应该使用uksort。
function date_compare($a, $b)
{
$t1 = strtotime($a);
$t2 = strtotime($b);
return $t1 - $t2;
}
uksort($data, 'date_compare');下面是一个有效的示例:
https://stackoverflow.com/questions/62626920
复制相似问题