Wie sortiere ich ein Array von Zeiten chronologisch?

8

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?

    
EmmyS 22.06.2011, 16:46
quelle

8 Antworten

5

Es sieht also so aus, als ob Sie nach etwas fortgeschrittenerem suchen als nach einer Standardsortierung.

%Vor%     
cwallenpoole 22.06.2011, 17:16
quelle
21

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%     
cwallenpoole 22.06.2011 16:48
quelle
5

Das stimmt, sort gibt bool zurück. Benutze das einfach:

%Vor%     
technology 22.06.2011 16:48
quelle
5

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.

%Vor%

ist der Weg zu gehen.

    
phihag 22.06.2011 16:48
quelle
2

ä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.

    
oezi 22.06.2011 16:49
quelle
2

Entfernen Sie $ wedTrackTimes = vor dem Sortieren.

%Vor%     
djdy 22.06.2011 16:51
quelle
0

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%     
Abhinav bhardwaj 13.06.2017 11:09
quelle
0

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.

%Vor%

Für jeden, der in dieser Syntax verloren geht, gibt es die gleiche Funktionalität in mehr Zeilen.

Code: ( Demo )

%Vor%

Ausgabe:

%Vor%     
mickmackusa 03.02.2018 14:51
quelle

Tags und Links