2017-08-31 89 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