Wie man ein array Sortieren mal chronologisch?
Ich habe ein nicht-assoziatives array, wo die Daten kommt, ist nicht sortiert (ich bin für den Empfang der Daten von einer außerhalb des Systems und können es zwingen, zu kommen in das array in sortierter Reihenfolge.) Gibt es eine Möglichkeit, das Sortieren der Werte? Ich hab das versucht:
$wedTrackTimes = array("9:30 AM-10:30 AM", "8:15 AM-9:15 AM", "12:30 PM-1:30 PM", "2:00 PM-3:00 PM", "3:30 PM-4:30 PM");
$wedTrackTimes = array_unique($wedTrackTimes);
$wedTrackTimes = sort($wedTrackTimes);
print_r($wedTrackTimes);
Aber anstatt ein sortiertes array, gibt Sie 1 zurück. Ich gehe davon aus, dass es ist, weil es nicht-assoziativ, so gibt es keine Tasten. Gibt es eine Möglichkeit, ein array Sortieren nach Wert nur??? Brauchen wir wirklich die 9:30 UHR Zeit-slot zu fallen nach dem 8:15 UHR-slot, wie es sollte.
UPDATE
Danke an alle für die Antworten; geschafft das array zu Sortieren, aber nicht wie erwartet. Wenn ich die Standard-Art geben, bekomme ich diese:
Array
(
[0] => 12:30 PM-1:30 PM
[1] => 2:00 PM-3:00 PM
[2] => 3:30 PM-4:30 PM
[3] => 8:15 AM-9:15 AM
[4] => 9:30 AM-10:30 AM
)
Mit SORT_NUMERIC ich dieses:
Array
(
[0] => 2:00 PM-3:00 PM
[1] => 3:30 PM-4:30 PM
[2] => 8:15 AM-9:15 AM
[3] => 9:30 AM-10:30 AM
[4] => 12:30 PM-1:30 PM
)
Mit SORT_STRING ich dieses:
Array
(
[0] => 12:30 PM-1:30 PM
[1] => 2:00 PM-3:00 PM
[2] => 3:30 PM-4:30 PM
[3] => 8:15 AM-9:15 AM
[4] => 9:30 AM-10:30 AM
)
Was ich brauche, ist:
Array
(
[0] => 8:15 AM-9:15 AM
[1] => 9:30 AM-10:30 AM
[2] => 12:30 PM-1:30 PM
[3] => 2:00 PM-3:00 PM
[4] => 3:30 PM-4:30 PM
)
Ist das möglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, wie es aussieht, bist du auf der Suche nach etwas ein wenig weiter Fortgeschritten ist, als eine standard-Art.
Sortieren funktioniert, indem Sie verweisen (das heißt, es sortiert, was Sie an ihn übergeben), es gibt true oder false zurück, basierend auf Ausfall. Was du hier tust:
ist das zuweisen der Wert $wedTrackTimes auf TRUE oder FALSE.
Versuchen
Richtig, irgendwie gibt
bool
. Einfach:Sortieren
, wie alle php ' s Sortier-Funktionen, sortiert in-place. Es gibt true zurück, wenn die Sortierung erfolgreich war, andernfalls false. Dieses Ergebnis ist irrelevant, wenn Sie nur Sortieren strings/zahlen.ist der Weg zu gehen.
ändern Sie Ihren code zu diesem:
wie Sie Lesen können in die Dokumentation, ist der Rückgabewert von
sort()
ist true/1 oder false/0 und zeigt an, ob die Sortierung war möglich oder es ist ein Fehler aufgetreten.Entfernen $wedTrackTimes = vor Art.
In Ihrem code
Nicht variable zu Sortieren-Funktion,
Im Grunde, was Sie tun, ist die Zuordnung Sortieren, die den Wert (die wahr oder falsch) in wedTrackTimes,
Stattdessen verwenden
Vernünftig Sortieren nach Zeit (chronologisch) rufen für
strtotime()
.Hier ist ein one-liner, die für Sie mit
array_multisort()
.array_map()
undstrtotime()
aufgerufen werden, um erzeugen ein array verwendet werden, rein für die Sortierung.Für jeden, der verloren ist, in der die syntax, hier ist die gleiche Funktionalität auf mehrere Zeilen verteilt.
Code: (Demo)
Ausgabe: