2017-08-31 20 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); 
} 

しかし、これらは無特定の順序であり、どのように私は、最新の日付に基づいてそれらを出力することができますusort

+1

がそれらにすべての別々の配列であるか、それはそれは '$のunclaimed_users'のように見えますclearshot66 @配列 – clearshot66

+0

の配列では、親配列であり、彼が表示されている出力は、foreachループ – GrumpyCrouton

答えて

3

あなたが作ることができます使用:

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 .07.2017 '、' prize10 ']、['31 .08.2017'、 'prize6']のように変数に値を渡します。 、['21 .08.2017 '、' prize6 ']]; – Dgeorgex000000

+0

'$ unserialized [] = unserialize($ 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 
) 

をその後、それを並べ替えて簡単に使用することができます! 、日付と値を取得し、この使用例

:($合併)配列の使用kso​​rtをソートするには

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

を。ここでMOR情報:http://php.net/ksort

関連する問題