首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按索引(日期)对下面的数组进行排序?

如何按索引(日期)对下面的数组进行排序?
EN

Stack Overflow用户
提问于 2020-06-29 02:55:42
回答 2查看 146关注 0票数 0

请按索引(日期)对下面的数组进行排序。我想将下面的数组按其日期的ASC顺序排序。在排序后,第一个将是2020-06-29及其数组,然后是2020-06-30,我尝试了更多的排序机制,但它不能解决问题。请帮我解决这个问题

代码语言:javascript
复制
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
                            )
    
                    )
    
            )
EN

回答 2

Stack Overflow用户

发布于 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

票数 0
EN

Stack Overflow用户

发布于 2020-06-29 03:17:57

试试ksort

下面是一个简短的示例:

代码语言:javascript
复制
<?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

代码语言:javascript
复制
function date_compare($a, $b)
{
    $t1 = strtotime($a);
    $t2 = strtotime($b);
    return $t1 - $t2;
}    
uksort($data, 'date_compare');

下面是一个有效的示例:

https://repl.it/repls/FoolhardyDrabPolygon

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62626920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档