Ich hätte gerne eine möglichkeit zu sortieren das entweder die ältesten
oder neuesten Einträge/Datein als erstes angezeigt werden.
Zwei Schleifen. Einmal über alle Einträge laufen, einmal "stat" für jeden Dateinamen machen, das in ein Array speichern.
Das kannst du dann nach Größe, Datum, Besitzer, Inode-Nr oder sonstwas sortieren.
Zweite Schleife dann über das Sortierte Array.
Du baust dir eine Hilfsfunktion sortByModTime( $einArray) die das sortierte Array zurückliefert. Als Parameter erhält die Funktion ein Array mit Dateinamen, also das was glob liefert.
Die Änderungszeit einer Datei kannt du mit
https://www.php.net/manual/en/function.filemtime.php
rausbekommen. Nach der Zeit sortierst die files. Du baust dir einfach ein neues array als Assoziatives Array, mit der Zeit als Index, nach dem sortiert du wenn du das Array das als Paramter durchgelaufen bist.
statt glob(....) rufst du dann sortByModTime(glob(...)) auf.
Wenn nach dieser id-Geschichte sorotert werden soll, schreibst du dir eine weitere Funktion dafür.
Du baust dir eine Hilfsfunktion sortByModTime( $einArray) die das
sortierte Array zurückliefert. Als Parameter erhält die Funktion ein
Array mit Dateinamen, also das was glob liefert.
Die Änderungszeit einer Datei kannt du mit
https://www.php.net/manual/en/function.filemtime.php
rausbekommen. Nach der Zeit sortierst die files. Du baust dir einfach
ein neues array als Assoziatives Array, mit der Zeit als Index, nach dem
sortiert du wenn du das Array das als Paramter durchgelaufen bist.
statt glob(....) rufst du dann sortByModTime(glob(...)) auf.
Wenn nach dieser id-Geschichte sorotert werden soll, schreibst du dir
eine weitere Funktion dafür.
naja, die Zeit als Index könnte doppelte Einträge haben die dann überschrieben würden.
Wenn, dann muss das n Array im Array werden ...
Wobei die Anforderung schon ein wenig schräg ist.
Wenn ich alle Dateien in einem Verzeichnis include, und dabei eine bestimmte Reihenfolge brauche, dann vmtl. wegen Abhängigkeiten zwischen den Dateien. Und die Abhängigkeiten würde ich ungern dadurch definieren, wann ich das letzte Mal mit dem Editor an der Datei war.
Besser:
database/01_basis.php
database/10_erweiterung.php
database/99_ende.php
etc.
glob() sortiert direkt alphabetisch (solange man das nicht explizit anders haben will) und schon hat man das Problem erschlagen.
Danke für die Antworten, ich bin allerdings etwas überfordert damit.
Kann mir vllt. jemand den Codeschnippsel oben entsprechend anpassen?
glob() sortiert direkt alphabetisch (solange man das nicht explizit
anders haben will) und schon hat man das Problem erschlagen.
Ich habe derzeit
database/item1.php
database/item2.php
...
Die Sortierung scheint entsprechend zu funktionieren, allerdings würde ich gerne die Reihenfolge umkehren und das
scheint über glob nicht zu funktionieren oder?
Wenn nach dieser id-Geschichte sorotert werden soll, schreibst du dir
eine weitere Funktion dafür.
naja, die Zeit als Index könnte doppelte Einträge haben die dann
überschrieben würden.
Wenn, dann muss das n Array im Array werden ...
Vllt sollte man dann doch besser hier nach sortieren?
In den Datein befindet sich immer folgendes
$item_id = "1"; (bzw. 2,3,4,5 etc.)
Eigentlich funktioniert das gut, nur leider handelt es sich um das letzte Änderungsdatum und nicht um das Erstellungsdatum der Datei. Eine kurze recherche ergab das es unter unix/linux wohl kein Erstellungsdatum gibt.
Daher würde ich dann doch lieber hiernach sortieren:
In den Datein befindet sich immer folgendes
$item_id = "1"; (bzw. 2,3,4,5 etc.)
Eigentlich kann das ja wirklich nur eine Kleinigkeit sein aber ich weiß grad nicht wie. Kann mir jemand den Code aus meinem letzten post entsprechend anpassen? :)
Die Sortierung scheint entsprechend zu funktionieren, allerdings würde
ich gerne die Reihenfolge umkehren und das
scheint über glob nicht zu funktionieren oder?
Reihenfolge umkehren geht mit "array_reverse".
Wenn dir das reicht, bleibt's beim Dreizeiler:
1
foreach (array_reverse(glob("database/*.php")) as $filename) {