PHP按日期排序数组

时间:2013-11-17 20:00:16

标签: php

我需要按日期排序一些数组,这里是数组的一个例子。

[0]=>
  array(10) {
    [0]=>
    array(2) {
      ["title"]=>
      string(123) "Text"
      ["date"]=>
      string(25) "17 November 2013, 8:09 am"
    }
    [1]=>
    array(2) {
      ["title"]=>
      string(257) "Text"
      ["date"]=>
      string(26) "15 November 2013, 10:26 pm"
    ...

[1]=>
  array(10) {
    [0]=>
    array(2) {
      ["title"]=>
      string(123) "Text"
      ["date"]=>
      string(25) "16 November 2013, 8:09 am"
    }
    [1]=>
    array(2) {
      ["title"]=>
      string(257) "Text"
      ["date"]=>
      string(26) "10 November 2013, 10:26 pm"
    ...

我使用此函数按日期排列数组,但这不起作用

function sortFunction( $a, $b ) {
    return strtotime($a["date"]) - strtotime($b["date"]);
}

它按日期排列最内层的数组,但我想安排数据集中的所有元素而不仅仅是最里面的数组,任何想法如何解决这个问题?

更新

输出应该如下所示,

[0] =>
array(2) {
["title"]=>
      string(123) "Text"
      ["date"]=>
      string(25) "17 November 2013, 8:09 am"
}
[1] =>
array(2) {
 string(123) "Text"
      ["date"]=>
      string(25) "16 November 2013, 8:09 am"
}
[3] =>
array(2) {
 string(123) "Text"
      ["date"]=>
      string(25) "15 November 2013, 8:09 am"
}

1 个答案:

答案 0 :(得分:0)

我将你的数组合并到一个父数组中。听起来你的sort函数正在处理内部数组,所以你应该能够对它们进行排序:

<?php

$new_array = array();

foreach($parent_array as $children) {
    foreach($children as $grand_children) {
        $new_array[] = $grand_children;
    }
}

$parent_array = sortFunction($new_array);
unset($new_array);

print_r($parent_array); // now contains all (grand) children in one top level array

?>