Ich habe in einem Array Dateinamen gespeichert, die nach einem bestimmten Schema sortiert werden sollen. Dazu wollte ich die Funktion usort nehmen.
Das Array soll am Ende wie folgt sortiert sein:
g1307026.jpg
g1307025.jpg
g1307024.jpg
g1307023.jpg
g1307022.jpg
g1307021.jpg
g0308023.jpg
g0308022.jpg
g0308021.jpg
g3108025.jpg
g3108024.jpg
g3108023.jpg
g3108022.jpg
g3108021.jpg
Die Dateinamen fangen also immer mit einem g an, gefolgt von einem Datum und dann einer Zahl, bei gleichem Datum fortlaufend.
Wie schreibe ich die Funktion?
Mein Ansatz:
So funktioniert das Sortieren mit dem Datum noch nicht. Liegt bestimmt am strtotime? Habt ihr ne andere Idee?
Das Array soll am Ende wie folgt sortiert sein:
g1307026.jpg
g1307025.jpg
g1307024.jpg
g1307023.jpg
g1307022.jpg
g1307021.jpg
g0308023.jpg
g0308022.jpg
g0308021.jpg
g3108025.jpg
g3108024.jpg
g3108023.jpg
g3108022.jpg
g3108021.jpg
Die Dateinamen fangen also immer mit einem g an, gefolgt von einem Datum und dann einer Zahl, bei gleichem Datum fortlaufend.
Wie schreibe ich die Funktion?
Mein Ansatz:
PHP-Code:
function cmp ($a, $b) {
if ($a == $b) return 0;
$a_datum=strtotime(substr($a,1,6));
$a_num=substr($a,7,strpos($a,".")-7);
$b_datum=strtotime(substr($b,1,6));
$b_num=substr($b,7,strpos($b,".")-7);
if ($a_datum==$b_datum) {
return ($a_num > $b_num) ? -1 : 1;
}
else {
return ($a_datum > $b_datum) ? -1 : 1;
}
}
usort ($a, "cmp");
Kommentar