php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.10.2005, 16:30  
Gast
 
Beiträge: n/a
Standard Multidimensionales Array assoziativ sortieren.

Hallo,

mein Ziel ist es ein Verzeichnis auszulesen und dann die Dateinamen nach Datum geordnet auszugeben (die neuesten 5).

Das einlesen sieht so aus:

PHP-Code:
<?php$dir 'Files';
$handle opendir ($dir);
$files = array(
   
"zeit" => array (),
   
"dateiname" => array ()
   );
   
$i 0;
while (
$file readdir ($handle)){
   if (
$file != "." AND $file != ".." AND $file != "Sonstiges")
          
$files[dateiname][$i] = $file;
          
$files[zeit][$i]=filectime($dir.'/'.$files[dateiname][$i]);
          
$i++;
}
closedir($handle);

?>
Nun soll das Array sortiert werden nach dem filectime.
Wie mache ich das?

Mit rsort ordnet er mir zwar die Zeiten richtig, aber assoziiert nicht die Dateinamen. Wenn ich dann die Top 5 ausgeben will stehen zwar die richtigen Daten da aber nur die Dateinamen nach ihren normalen Array Index geordnet
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.10.2005, 16:34  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Du mußt eben die Zeit mit dem Dateinamen verknüpfen. Wie wärs mit:
Code:
while {
  $files[$file] = filectime($dir.'/'.$file);
}
arsort($files);
reset($files);
Zergling-new ist offline  
Alt 26.10.2005, 17:08  
Gast
 
Beiträge: n/a
Standard

Danke habe aber immernoch probleme
beim code:

PHP-Code:
<?php

while ($file readdir ($handle)){
   if (
$file != "." AND $file != ".." AND $file != "Sonstiges" AND $file != ".htaccess"){

    
$files[filectime($dir.'/'.$file)] =  $file;
        
$i++;


}

?>
befindet sich komischwerweise nur ein Bruchteil der im Verzeichgnis vorhandenen Dateien im array. warum?
 
Alt 26.10.2005, 17:13  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Was heißt das, er nimmt sie nicht an?

Wie heißen denn deine Dateien? Notfalls md5-Checksumme des Dateinamens als Index verwenden mit
md5($file)
und in einem Hilfs-Array die Zuordnung von Checksumme und Dateiname wiederherstellen.
Zergling-new ist offline  
Alt 26.10.2005, 17:17  
Gast
 
Beiträge: n/a
Standard

Komischerweise sind hier alle Dateinamen im array:

PHP-Code:
<?php
<?php 

while ($file readdir ($handle)){ 
   if (
$file != "." AND $file != ".." AND $file != "Sonstiges" AND $file != ".htaccess"){ 

   
$files[$i] =  $file
        
$i++; 




?>
?>
 
Alt 26.10.2005, 17:39  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Welche sind denn drinne die du nicht drinne haben willst? Du schließt ja offenbar nur ., .., .htaccess & (den Ordner) Sonstiges aus?!
Zergling-new ist offline  
Alt 26.10.2005, 17:55  
Gast
 
Beiträge: n/a
Standard

Ich denke mal, dass wohl mehrere Dateien den gleichen Timestamp haben. Versuch das ganze mal so zu sortieren:
PHP-Code:
<?php
usort
($filescreate_function('$value_1, $value_2''global $dir; return filectime($dir.\'/\'.$value_1) - filectime($dir.\'/\'.$value_2);'));
?>
 
Alt 26.10.2005, 18:07  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ist bei meiner Lösung ja egal, aber deine sieht auch interessant aus.
Zergling-new ist offline  
Alt 26.10.2005, 18:56  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Zergling
Ist bei meiner Lösung ja egal
Sicher?

Was erhältst Du denn, wenn Du das ganze z.B. so schreibst:
PHP-Code:
<?php
touch
($file12345678901234567890);
$files[filectime($dir.'/'.$file)] =  $file
?>
 
Alt 26.10.2005, 18:59  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich weiß nicht ob du mich mit dem Threadstarter verwechselst, aber ich benutze als Array-Index nicht den Zeitstempel, sondern den Dateinamen.

Und da er keinen Ordner einbezieht, dessen Name wie der einer Datei im selben Ordner lautet, dürfte in keinem Fall eine Datei "verschluckt" werden.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Array sortieren mit regex Lupi PHP Tipps 2008 3 21.07.2008 15:17
Array nach bestimmter Spalte sortieren GELight PHP Tipps 2006 4 19.08.2006 23:42
Mehrdimensionales Array sortieren Unbekanntes_Pferd PHP Tipps 2006 6 23.05.2006 20:42
array richtig sortieren, dann ausgeben Heart PHP Tipps 2006 5 28.04.2006 20:23
Multidimensionales Array nach String sortieren ssm PHP Tipps 2006 12 29.03.2006 15:38
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Array verkehrt sortieren (key) // letzter Arrayeintrag PHP Tipps 2005-2 5 20.09.2005 15:55
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array sortieren PHP Tipps 2005 7 15.05.2005 02:14
Array mit Gruppen: Wie Sortieren PHP Tipps 2005 2 29.01.2005 15:15
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2005-2/32991-multidimensionales-array-assoziativ-sortieren.html, jquery sort multi array, jquery array sortieren, php 3 dimensional array, sort assoziativ, wie lautet der zweite nam für assoziativgesetz, php assoziatives array nach bestimmter spalte sortieren, jquery multi array, multidimensionales array assozativ nach datum sortieren php, php assoziertes array sortierung natürlich, php usort key, jquery array assoziativ, multi array ausgeben, wie lautet das assoziativgesetz, php assoziiertes array sortieren, php uasort datum, jquery array mit datum, php multidimensional array sortieren nach einer spalte, javascript multi array nach index sortieren, jquery array auslesen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.