2017-08-31 125 views
-3

嗨我有一个数组,即时通讯使用foreach循环,每个包含日期的列表。按日期排序多个阵列

我想做另一个foreach循环来输出每个数组,但是根据日期排序。

这是目前输出:

Array 
(
    [0] => 31.08.2016 
    [1] => prize10 
) 
Array 
(
    [0] => 31.07.2017 
    [1] => prize10 
) 
Array 
(
    [0] => 31.08.2017 
    [1] => prize6 
) 
Array 
(
    [0] => 21.08.2017 
    [1] => prize6 
) 

和代码,我已经是:

foreach ($unclaimed_users as $unclaimed_user) { 
    $a = get_user_meta($unclaimed_user->ID , "unclaimed"); 
    $unserialized = unserialize($a[0]); 
    //echo $unserialized[0]; //Date 
    //echo $unserialized[1]; //Prize 

    print_r($unserialized); 
} 

但是,这些都是在没有特定的顺序,我怎么可以让他们输出的基础上,最近日期

+1

是那些所有独立阵列还是阵列 – clearshot66

+0

@ clearshot66阵列它看起来像'$ unclaimed_users'是父阵列,而他显示输出与foreach循环 – GrumpyCrouton

回答

3

您可以使用usort

function sort_date($a, $b) 
{ 
    $d1 = strtotime($a[0]); 
    $d2 = strtotime($b[0]); 
    return $d2 - $d1; 
} 

$array = [['31.08.2016', 'prize10'], ['31.07.2017', 'prize10'], ['31.08.2017', 'prize6'], ['21.08.2017', 'prize6']]; 

usort($array, 'sort_date'); 

print_r($array); 

给出:

Array 
(
    [0] => Array 
     (
      [0] => 31.08.2017 
      [1] => prize6 
     ) 

    [1] => Array 
     (
      [0] => 21.08.2017 
      [1] => prize6 
     ) 

    [2] => Array 
     (
      [0] => 31.07.2017 
      [1] => prize10 
     ) 

    [3] => Array 
     (
      [0] => 31.08.2016 
      [1] => prize10 
     ) 

) 
+0

因此,如何会如你所说:$ array = [['31 .08.2016','prize10'],['31。077.2017','prize10'],['31.208.2017','prize6'] ,['21.208.2017','prize6']]; – Dgeorgex000000

+0

'$ unserialized [] =反序列化($ a [0])'。我以为你得到了这些,我直接去排序 – Thamilan

+0

Sorr yim努力使这项工作,你可以将它纳入我的代码上面请 – Dgeorgex000000

0

首先,我认为你需要合并的数组是这样的:

foreach $arrays as $array) { 
    $merged[] = array(date('Y-m-d', strtotime($array[0])) => $array[1]; 
} 

,并在这里你会得到这样的:

Array (
    [2016-08-31] => prize10 
    [2017-31-07] => prize10 
    [2017-31-08] => prize6 
    [2017-21-08] => prize6 
) 

之后,您可以对其进行分类并轻松使用!

例如获取日期和值,使用:

foreach($merged as $date => $prize) { 
    echo $date . ':' . $prize; 
} 

排序的阵列中使用kso​​rt($合并);铁道部信息在这里:http://php.net/ksort