2017-08-31 4 views
-3

Hallo Ich habe eine Liste von Arrays, die mit einer foreach-Schleife bekommen, die jeweils ein Datum enthalten.Sortierung mehrerer Arrays nach Datum

Ich möchte eine weitere foreach-Schleife ausführen, um jedes Array auszugeben, aber sie basierend auf dem Datum zu sortieren.

Es gerade ausgibt:

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 
) 

und der Code ich habe, ist:

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

Aber diese sind in keiner bestimmten Reihenfolge, wie kann ich sie Ausgang machen, basierend auf dem jüngsten Datum

+1

sind die alle separate Arrays oder ist es ein Array von Arrays – clearshot66

+0

@ clearshot66 Es ist wie '$ unclaimed_users' aussieht, ist das übergeordnete Array und die Ausgabe zeigt er ist von der foreach-Schleife – GrumpyCrouton

Antwort

3

Sie können von usort machen:

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

Gibt:

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

So wie würde Ich bekomme sie Werte in eine Variable wie Sie gesagt haben: $ array = [['31 .08.2016 ',' prize10 '], ['31 .07.2017', 'prize10'], ['31 .08.2017 ',' prize6 '] , ['21 .08.2017 ',' prize6 ']]; – Dgeorgex000000

+0

'$ unserialized [] = unserialize ($ a [0])'. Ich dachte, Sie haben diese und ich ging direkt zum Sortieren – Thamilan

+0

Sorr Yim kämpfen, um diese Arbeit zu machen, können Sie es in meinen Code oben bitte integrieren – Dgeorgex000000

0

Zunächst einmal, ich glaube, Sie brauchen Ihre Arrays wie folgt zusammen:

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

und hier wird erhalten Sie folgendes:

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

Danach können Sie es sortieren und leicht verwenden!

Zum Beispiel Datum und Wert zu erhalten, verwenden Sie diese:

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

Um die Array Verwendung ksort zu sortieren ($ fusioniert); Mor Infos hier: http://php.net/ksort

Verwandte Themen