2013-02-27 40 views
0

嗨,我有一个数组是2个独立阵列的组合产生相同的结果,以下是我的数组合并后:按日期PHP数组排序后合并

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']; }); 
+0

array_map用于一个函数应用于阵列的每个元素,而不是分选的数组本身 – MatRt 2013-02-27 02:32:10

回答

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

非常简单的东西,如usort()

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

的''的$ A' date_created'键和'$ B '应该比较。 – Matthew 2013-02-27 02:34:41

+0

@Matthew哎呀,我错过了某种方式:) – alex 2013-02-27 02:34:59

+0

@alex有没有使用之前的2个数组合并? – d3bug3r 2013-02-27 02:57:11

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);