PHP按mysql日期排序数组

dav*_*ter 2 php mysql arrays sorting date

我有一个数组,我想使用MySQL数据库中的日期字段进行排序.

以下是news在我的类中命名的数组示例:

[48] => Array
    (
        [id] => 14
        [type] => 3
        [updated] => 2010-04-17 13:54:42
    )

[49] => Array
    (
        [id] => 15
        [type] => 3
        [updated] => 2010-04-17 13:57:21
    )
Run Code Online (Sandbox Code Playgroud)

我想按updated字段排序.

我有一些我已经开始的代码,但我不确定如何完成它并让它工作.

class ProcessClass {
  // ....
  function sortNews($x)
  {
    usort($this->news, array("ProcessClass", "cmp")); //correct sort type?
  }

  function cmp($a, $b)
  {
    //  missing code
  }
Run Code Online (Sandbox Code Playgroud)

谁能帮忙?

gna*_*arf 9

在大多数情况下,将更容易添加ORDER BY updated到SQL查询的末尾,但是如果您的数据来自多个源并且您需要使用PHP,则可以使用usort()基于用户定义的函数对数组进行排序.要使用类函数进行比较,函数必须是静态的.它可以简单地updated使用strcmp()函数比较数组中的值,该函数恰好返回您需要按MySQL格式化日期排序的内容:

class ProcessClass {
  // this must be static
  static function sort_by_updated($a, $b)
  {
    return strcmp($a['updated'], $b['updated']);
  }

  function sortNews()
  {
    usort($this->news, array("ProcessClass", "sort_by_updated")); 
  }
Run Code Online (Sandbox Code Playgroud)

如果要反转排序顺序,只需交换比较参数: return strcmp($b['updated'], $a['updated'])

  • 同意,让数据库排序,这是数据库的好处. (2认同)