【问题标题】:How do I sort this array by this value?如何按此值对该数组进行排序?
【发布时间】:2013-08-02 13:28:38
【问题描述】:

如何在 PHP 中对这个数组进行排序?我想首先获得最近的日期。我不能在 MySQL 中进行排序,因为日期字段来自几个不同的表。这里显示了三行 - 总共有 600 多行。

Array
(
    [0] => Array
        (
        Translator => Array
            (
                [id] => 1482
                [name] => Jane Doe
                [last_project] => (null)
            )
        )

    [1] => Array
        (
        Translator => Array
            (
                [id] => 1024
                [name] => John Doe
                [last_project] => 2013-06-25
            )
        )

    [2] => Array
        (           
        Translator => Array
            (
                [id] => 32
                [name] => Tom Doe
                [last_project] => 2009-07-10
             )
        )
)

【问题讨论】:

  • 向我们展示 SQL 查询,我确信它在项目中是可排序的,如果它吐出这个数组作为结果...
  • 我不这么认为——我做了一个查询来获取所有翻译。然后遍历结果以从一张表中查找最近的项目日期。如果在该表中未找到任何结果,我会执行第二次查询以从另一个表中查找最近的项目日期。
  • 即使结果来自多个不同的表,我仍然认为它可以由数据库排序,如果你知道如何使用它。

标签: php


【解决方案1】:
function sortFunction( $a, $b ) {
    return strtotime($a["last_project"]) - strtotime($b["last_project"]);
}
usort($array, "sortFunction");

取自PHP order array by date?

【讨论】:

  • 谢谢,这行得通。我在上面编辑了数组的形式,并且还必须在此处编辑代码(在回调函数中添加了 ['Translator']。还必须反转数组以首先获取最新的。
【解决方案2】:
function sortByDate($a, $b) {
    return $a['last_project'] - $b['last_project'];
}

usort($myArray, 'sortByDate');

【讨论】:

    猜你喜欢
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    相关资源
    最近更新 更多