hi @ all
ich hab da mal ein kleines problem: ich möchte filme in einem verzeichniss nach dem erscheinungsjahr sortieren also der älteste zu erst.
dazu lese ich das jahr aus dem dateinamen aus. damit habe ich versucht ein assoziatives array zu füllen und dann nach den jahrezahlen zu sortieren, was soweit auch geklappt hat aber wenn im verzeichnis 2 filme mit dem selben erscheinungsjahr gibt wird der erste eintrag überschrieben und so weiter.
also ist die idee wenn das passiert den assiziativen schlüssel einfach um eins zu erhöhen und einen neuen eintrag in dem array damit zu erzeugen, aber jetzt sammelt das array alle film namen nach und nach ein und zeigt in jeden unterverzeichnis alle filme aus den vorherigen verzeichnissen mit an , aber es sortiert brav nach erscheinungs jahr.
also vermute ich der fehler liegt in der ebene der schleifen, aber ich finde den fehler einfach nicht.
der code ist kommentiert zum dokumentieren was passiert.
// Dateien einlesen
$verzeichnis1 = array_slice(scandir($verzeichnispfad1), 2);
// sortieren nach Ehrscheinungsjahr
foreach ($verzeichnis1 as $element1)
{
// auslesen der Jahreszahl - von hinten durch negative Zahl
$jahr = (mb_substr($element1, -9, 4));
// vergleichen, ob die jahreszahl gleich ist
if (!mb_strstr($jahr_alt,$jahr))
{
$jahr_alt .= $jahr;
// String in Integer umwandeln
$jahradd = intval($jahr);
// um eins erhöhen
$jahradd += 1;
// wieder in einen string umwandeln
$jahr = strval($jahradd);
// Übertrag in ein neues assoziatives Array
$ejahr[$jahr] = $element1;
}
}
// nach den assozierten Schlüsseln sortieren
ksort($ejahr);
// ausgeben der Dateien
foreach ($ejahr as $element1)
Alles anzeigen
ist ein auszug aus den quelltext. - so wie das sich jetzt verhält , wäre es gut für eine suchmaske um nach namen zu suchen, wenn alle namen in einem array sind.
folgender quell code ist die basis von der ich ausgegangen bin, um nach jahreszahlen zu sortieren anstatt alphabetisch.
// Dateien einlesen
$verzeichnis1 = array_slice(scandir($verzeichnispfad1), 2);
// alphabetisch sortieren
sort($verzeichnis1);
// ausgeben der Dateien
foreach ($verzeichnis1 as $element1)
danke für jede zielführende hilfe.