[PHP] ordner in array / array sortieren *erledigt*

Anachronist

Well-known member
ID: 255289
L
24 August 2006
280
11
Hi,
ich möchte den inhalt eines ordners auslesen.
die dateinamen möchteich dann in ein array schreiben.
dann soll das array so sortiert werden, dass die datein, die den (zahlenmäßig) größten namen haben als erstes stehen und die kleineren danach etc.
danach soll jede datei nacheinander aus dem array gelesen werden und angezeigt werden.

also z.b.:
ordner:
1.txt
2.txt
3.txt
4.txt
ins array lesen:
array ("1.txt","2.txt","3.txt","4.txt")
das array sortieren
array ("4.txt","3.txt","2.txt","1.txt")
und den inhalt ausgeben:
inhalt 4.txt
inhalt 3.txt
inhalt 2.txt
inhalt 1.txt

kann mir bitte einer sagen, wie das geht?
währe nett, wenn auch n bissl code dabei wäre.
ich danke jedem, der mir hilft
 
Zuletzt bearbeitet:
Kurzer Denkanstoss:

Speicher doch immer gleich den strlen Wert der Teile mit ins Array, also einmal als Key und einmal als Value. Dann kannst das Ganze nach dem Wert mit dem strlen Wert drin sortieren lassen.

Gruesse,
artemis
 
PHP:
$fileAr = array();
			if ($dir = @dir(VERZEICHNISNAME))
			{
				while(FALSE !== ($file = $dir->read()))
				{
					if ($file == '.' || $file == '..')
						continue;
					else
						$fileAr[] = $file;
	    		}
				$dir->close();
			}
			else
				die('Verzeichnis existiert nicht!');

sort($fileAr, SORT_STRING);  // kann funktionieren bin mir net sicher
foreach($fileAr AS $name)
  echo $name;  // gibt alle namen geordnet aus

ungetestet
VERZEICHNISNAME ersetzten
die funktion sort bin ich mir net sicher ob es so funktioniert evtl. wird die das auch nur ABC mäsig ordnen. Wenn dem so ist mit du mit strlen() dir was basteln.

gruß strolch
 
vielen, vielen dank an euch beide.

@strolch00
hab deinen code eingesetzt, funktioniert wunderbar.
habe aber statt sort arsort genommen.

dankeschön
 
ne des is zufall ich hab mal artemissays idee aufgegriffen und nimm bitte den code hier weil der andere dir auch evtl. vorhadene Verzeichnis mit ausliest.

PHP:
$fileAr = array();
if ($dir = @dir('redraft/de/'))
{
	while(FALSE !== ($file = $dir->read()))
	{
		if(is_file("redraft/de/".$file))
		{
			if ($file == '.' || $file == '..')
				continue;
			else
				$fileAr[$file] = strlen(substr($file, 0, -4));
		}
		else
			continue;
	}
	$dir->close();
}
else
	die('Verzeichnis existiert nicht!');

arsort($fileAr, SORT_NUMERIC);
foreach($fileAr AS $name => $value)
		echo $name."<br />";  // gibt alle namen geordnet aus
der ist diesmal auch getestet ;)
 
Hi,
nachdem ich eure Ideen begeistert eingestzt habe, stellt sich mir ein neues Problem in den Weg:
Ich möchte jetzt nicht alle dateien im Ordner auslesen, sondern nur dateien mit bestimmten endeungen.
Wie kann man das realisieren?
Ich nehme dankend jeden Lösungsvorschlag an...