1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Array von Dateien sortieren

  • Flowyes
  • 15. Februar 2005 um 21:30
  • Unerledigt
  • Flowyes
    9
    Flowyes
    Mitglied
    Punkte
    750
    Beiträge
    116
    • 15. Februar 2005 um 21:30
    • #1

    Ich hab ein Verzeichnis, wo mehrere hundert jpeg-Bilder gespeichert sind, die die Namen 1.jpg, 2.jpg, 3.jpg usw... haben. Diese entsprechen den Frames in einem Video und ihre Reihenfolge muss deswegen erhalten bleiben.

    Ich will alle diese Dateien in ein Array schreiben, und mit diesem Array was machen. Ich hab dafür folgende Funktion:

    PHP
    function get_frames ($directory) {
      if (is_dir($directory)) {
    	if ($dh = opendir($directory)) {
    	  $frames = array();
    	  while (($file = readdir($dh)) !== false) {
    		array_push($frames, $file);
    	  }
    	}
      }
      else {
    	   echo "Error: get_frames(): directory not found ";
    	   echo "or isn't one";
      }
      return $frames;
    }
    Alles anzeigen

    Ich will dann in einer anderen Funktion auf dieses Array sequenziell zugreifen:

    PHP
    // ...
    
    
    $frames = get_frames($dir);
      for ($i=2;$i<count($frames);$i++) {
    	 // tu irgendwas mit $frames[$i] ...
      }
    // ...

    Das Problem ist das das frames-Array so aussschaut:
    $frames: {
    [0] => 1.jpg
    [1] => 10.jpg
    [2] => 100.jpg
    [3] => 101.jpg
    [4] => 102.jpg
    ...
    }
    Die Reihenfolge bleibt also nicht erhalten. Wie kann ich es schaffen, dass die Dateien in der Reihenfolge ins Array eingetragen werden, wie ich es haben will?

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • mas
    9
    mas
    Mitglied
    Reaktionen
    1
    Punkte
    751
    Beiträge
    143
    • 15. Februar 2005 um 22:00
    • #2

    probier mal folgendes:

    PHP
    natsort ($frames);


    das könnte vielleicht auch funktionieren (kanns grad nicht ausprobieren):

    PHP
    sort ($frames, SORT_NUMERIC);
  • Flowyes
    9
    Flowyes
    Mitglied
    Punkte
    750
    Beiträge
    116
    • 15. Februar 2005 um 22:15
    • #3

    ich hab schon beide probiert, die haben aber genau gar nix bewirkt ...
    [EDIT]
    Ich habs schon. Es geht mit usort(). Folgendes liefert genau das was ich will:
    usort($frames, "strnatcmp");
    [/EDIT]

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • laborg
    14
    laborg
    Mitglied
    Reaktionen
    11
    Punkte
    1.966
    Beiträge
    360
    • 15. Februar 2005 um 22:44
    • #4

    edit: überflüssig.

  • mas
    9
    mas
    Mitglied
    Reaktionen
    1
    Punkte
    751
    Beiträge
    143
    • 15. Februar 2005 um 22:55
    • #5

    das würde auch funktionieren:

    PHP
    // Sortieren
    natsort($frames);
    // Schlüssel neu durchnummerieren
    $temp = array_values($frames);
    // Array zurückgeben
    return $temp;
  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung