Php数组在合并后按日期排序

时间:2013-02-27 02:29:03

标签: php arrays sorting

嗨我有一个数组,它是2个独立数组的组合,产生相同的结果,以下是合并后的数组:

Array
(
    [0] => Array
        (
            [event_id] => 16
            [user_id] => 3
            [date_created] => 20130227095010

        )

    [1] => Array
        (
            [event_id] => 15
            [user_id] => 2
            [date_created] => 20130227101734

        )

    [2] => Array
        (
            [event_id] => 16
            [user_id] => 2
            [date_created] => 20130227094856

        )

)

从这里开始,我如何基于date_created desc或asc再次排序,而不使用我之前合并过的2个数组?

更新: 上一个数组结果

ARRAY1:

Array
(
    [0] => Array
        (
            [event_id] => 15
            [user_id] => 2
            [date_created] => 20130227101734


        )

    [1] => Array
        (
            [event_id] => 16
            [user_id] => 2
            [date_created] => 20130227094856

        )

)

阵列2:

Array
(
    [0] => Array
        (
            [event_id] => 16
            [user_id] => 3
            [date_created] => 20130227095010

        )

)

如何在这些函数中使用循环来为上述每个数组提取date_created

usort($array,function($a, $b) { return $a['date_created'] - $b['date_created']; }); 

3 个答案:

答案 0 :(得分:1)

您可以创建自己的排序函数回调,并将其与usort方法一起使用。 需要重新使用前两个阵列。

usort($yourMergedArray, yourCallBackSort);

function yourCallBackSort($firstEntry, $secondEntry)
{
    // Do some stuff to compare your values and return -1, 0 or 1
    // depend if $firstEntry id <, = or > to $secondEntry
}

答案 1 :(得分:1)

使用usort()之类的内容非常简单。

usort($array,
      function($a, $b) { return $a['date_created'] - $b['date_created']; });

答案 2 :(得分:0)

试试这个,

$sort = array();
foreach($your_combined_array as $k=>$v) {
    $sort['date_created'][$k] = $v['date_created'];
}

array_multisort($sort['date_created'], SORT_DESC, $your_combined_array);


echo "<pre>";
print_r($your_combined_array);