• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Multidimensional array unter Beibehaltung von $key sortieren.

htphpml

Neues Mitglied
Hallo,
Brauche noch einmal Hilfe.

PHP:
<?php
$json = '{"art":{"88721":{"timestamp":1522222377,"Status":{"Gesamt":1,"Bestand":0}},"92259":{"timestamp":1522251889,"Status":{"Gesamt":0,"Bestand":0}},"92260":{"timestamp":1522252886,"Status":{"Gesamt":0,"Bestand":0}},"92261":{"timestamp":1522251948,"Status":{"Gesamt":1,"Bestand":1}},"92262":{"timestamp":1522251903,"Status":{"Gesamt":0,"Bestand":0}},"122698":{"timestamp":1522236713,"Status":{"Gesamt":0,"Bestand":0}},"138067":{"timestamp":1522158878,"Status":{"Gesamt":0,"Bestand":0}},"149859":{"timestamp":1522247911,"Status":{"Gesamt":0,"Bestand":0}},"149864":{"timestamp":1522170776,"Status":{"Gesamt":0,"Bestand":0}},"149881":{"timestamp":1522170889,"Status":{"Gesamt":0,"Bestand":0}},"152906":{"timestamp":1522162105,"Status":{"Gesamt":1,"Bestand":0}},"152907":{"timestamp":1522162063,"Status":{"Gesamt":1,"Bestand":1}},"154545":{"timestamp":1522247894,"Status":{"Gesamt":0,"Bestand":0}},"157295":{"timestamp":1522247933,"Status":{"Gesamt":0,"Bestand":0}},"160167":{"timestamp":1522247882,"Status":{"Gesamt":0,"Bestand":0}},"160168":{"timestamp":1522247874,"Status":{"Gesamt":0,"Bestand":0}},"160209":{"timestamp":1522224064,"Status":{"Gesamt":1,"Bestand":0}},"160211":{"timestamp":1522252851,"Status":{"Gesamt":0,"Bestand":0}},"160212":{"timestamp":1522252862,"Status":{"Gesamt":0,"Bestand":0}},"160886":{"timestamp":1522247919,"Status":{"Gesamt":0,"Bestand":0}},"161271":{"timestamp":1522223361,"Status":{"Gesamt":1,"Bestand":0}}}}';

$test = json_decode($json,true);

uasort($test['art'],function($a, $b) {
    if ($a['timestamp'] == $b['timestamp']) return 0;
    if ($a['timestamp'] < $b['timestamp']) return 1;
    return -1;
});
/*
uasort($test['art'],function($a, $b) {
    if ($a['Status']['Gesamt'] == $b['Status']['Gesamt']) return 0;
    if ($a['Status']['Gesamt'] > $b['Status']['Gesamt']) return 1;
    return -1;
});
*/

var_dump($test);


Hier mal mein Beispiel.
Mit dem auskommentierten teil sortiert es mein array absteigend der Zeit nach. Funktioniert perfekt.

Jetzt dachte ich mir, hänge ich dies nochmal dran, nur mit einer Sortierung nach dem status, klappt auch bei 2 bis 3 Einträge sind mehr vorhanden kommt eine mir unverständliche Sortierung zu stande.

Wie bekomme ich es hin alles nach der Zeit zu sortieren und zugleich nach dem Status. Als erstes alles mit dem Status 0 und danach alle mit dem Status 1,dies aber chronologisch der Zeit nach.

Viele Grüße
 
Werbung:
Guten morgen und vielen vielen Dank.

Ich musste nur noch in Zeile 4 das $a mit $b tauschen und schon funktioniert es.

Das warum verstehe ich zwar nicht, da nach dem "else" nur der Status und nicht die Zeit ausgewertet wird, aber es kommt trotzdem richtig raus...

Danke nochmals, es ist doch schön, nach mehreren tagen des selbst versuches nun ein funktionierendes Script zu haben.

*Thumbs Up*
 
Zurück
Oben