Hallo Rabeneik,
- nach Datum
- Die Elemente gleicher UID sollen zusammen bleiben
Das widerspricht sich. Entweder ist das Datum führend, oder die UID.
Gucken wir mal einen Extrakt deines Beispiels an.
Nr | UID | Datum |
---|---|---|
[0] | 5ea6c609473ab | 06.02.2020 |
[1] | 5ea6c60947793 | 04.02.2020 |
[2] | 5ea6c60947b7b | 03.02.2020 |
[3] | 5ea6c60947b7b | |
[4] | 5ea6c60947b7b | 06.02.2020 |
Die Zeile 3 hat kein Datum, aber die gleiche UID wie die Zeile davor und dahinter. Die beiden scheinen in deiner Vorstellung eine logische Einheit zu bilden, und die soll beisammen bleiben.
Aber du sagst, dass die erwartete Reihenfolge 2,3,1,0,4 sei. Das widerspricht ebenfalls deiner Vorgabe, denn warum darf Satz 4 von den Sätzen 2+3 getrennt werden, der hat doch die gleiche UID wie 2 und 3?
Eine einfache Lösung kann darin bestehen, dass Du dein Array vor dem Sortieren durchgehst und in jeder Zeile, in der das Datum leer ist und die UID mit dem vorherigen Satz übereinstimmt, das Datum vom vorigen Satz überträgst. Danach sortierst Du nach Datum, UID, Prio und Prio2 - was mit usort und einem passenden Vergleichscallback lösen lässt.
Aber bevor man wirklich zu etwas raten kann, solltest Du sehr viel präziser spezifizieren, wie deine Daten organisiert sind.
Rolf
sumpsi - posui - obstruxi