Ich habe ein nicht assoziatives Array, in dem die eingehenden Daten nicht sortiert sind (ich erhalte die Daten von einem externen System und kann sie nicht in sortierter Reihenfolge in das Array einbringen.) Gibt es eine Möglichkeit zu sortieren? die Werte? Ich habe es versucht:
%Vor%Aber anstatt ein sortiertes Array zurückzugeben, gibt es 1 zurück. Ich nehme an, es liegt daran, dass es nicht assoziativ ist, also gibt es keine Schlüssel. Gibt es eine Möglichkeit, ein Array nur nach Wert zu sortieren? Wir brauchen wirklich das 9:30 AM-Zeitfenster, um nach dem 8:15 AM-Slot zu fallen, wie es sollte.
AKTUALISIEREN
Danke an alle für die Antworten; Das hat das Array sortieren lassen, aber nicht wie erwartet. Wenn ich den Standardsortiertyp verwende, bekomme ich Folgendes:
%Vor%Mit SORT_NUMERIC bekomme ich das:
%Vor%Mit SORT_STRING bekomme ich das:
%Vor%Was ich brauche ist:
%Vor%Ist das möglich?
Es sieht also so aus, als ob Sie nach etwas fortgeschrittenerem suchen als nach einer Standardsortierung.
%Vor%Die Sortierung funktioniert per Referenz (das heißt, sie sortiert, was immer Sie übergeben), sie gibt basierend auf dem Fehler wahr / falsch zurück. Was machst du hier?
%Vor%weist den Wert $ wedTrackTimes TRUE oder FALSE zu.
Versuchen Sie
%Vor% sort
, wie alle anderen PHPs Sortierfunktionen , sortiert in-place. Es gibt true zurück, wenn die Sortierung erfolgreich war, andernfalls false. Dieses Ergebnis ist irrelevant, wenn Sie nur Strings / Zahlen sortieren.
ist der Weg zu gehen.
ändern Sie Ihren Code zu diesem:
%Vor% Wie Sie in der Dokumentation lesen können, ist der Rückgabewert von sort()
wahr / 1 oder false / 0 und zeigt an, ob eine Sortierung möglich war oder ein Fehler aufgetreten ist.
In Ihrem Code
%Vor%Weisen Sie der Sortierfunktion keine Variable zu, Im Grunde nehmen Sie den Wert von sort (was wahr oder falsch ist) in wedTrackTimes Statt dessen verwenden Sie
%Vor% Sinnvoll nach Zeit sortierend (chronologisch) wird strtotime()
aufgerufen.
Hier ist ein One-Liner für Sie mit array_multisort()
. array_map()
und strtotime()
werden aufgerufen, um ein Array zu generieren, das ausschließlich für die Sortierreihenfolge verwendet wird.
Für jeden, der in dieser Syntax verloren geht, gibt es die gleiche Funktionalität in mehr Zeilen.
Code: ( Demo )
%Vor%Ausgabe:
%Vor%