Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Probleme mit sort() [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Probleme mit sort()


 
bweichel
23-03-2009, 12:24 
 
Hi,

ich möchte eine Array aphabetisch sortieren, aber es will mir nicht so gelingen.

Ich lese ein Verzeichnis schreibe die Dateinamen in ein Array. Danach sortiere ich es mit sort().


$verzeichnis = openDir('irgendein/Verzeichnis/');
$verz = array();

while ($file = readDir($verzeichnis)) {
if ($file != "." && $file != "..") {
$verz[$file] = 1;
}
}
closeDir($verzeichnis);

asort($verz,SORT_STRING);


Ausgegeben werden die Dateinamen wie folgt: "Halle","Bohr" und "Plan". Richtig sortiert wäre es ja in diese Reihenfolge: "Bohr", "Halle", "Plan".

Warum sortiert er mir das nicht richtig? In einem anderen Verzeichnis liegt "Massiv" und "Stahl". Da war zuvor vertauscht, jetzt ist es richtig sortiert. Also einmal funktioniert es, bei dem anderen mal nicht...

Danke für Eure Hilfe!

 
TobiaZ
23-03-2009, 12:46 
 
1. Von sort() sehe ich nichts.
2. Von der Ausgabe auch nicht.
3. An Testausgaben ist gar nicht zu denken.

Das alles hätte dich sicher erkennen lassen, dass du ein Array voller Einsen versuchst zu sortieren. Sinnlos!

 
fireweasel
23-03-2009, 13:27 
 
Original geschrieben von bweichel
ich möchte eine Array aphabetisch sortieren, aber es will mir nicht so gelingen.

PHP bietet einen Rattenschwanz an Sortierfunktionen. Nicht jede eignet sich für jede Art von Array.


while ($file = readDir($verzeichnis)) {
if ($file != "." && $file != "..") {
$verz[$file] = 1;
}
}
//...
asort($verz,SORT_STRING);



Für deinen Fall würde ich ksort() (http://php.net/manual/de/function.ksort.php) empfehlen. Das sortiert ein assoziatives Array nach seinen Schlüsseln ("keys").

 
combie
23-03-2009, 18:07 
 
Oder eifachn nur:
$array = glob('irgendein/Verzeichnis/*');


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:22 Uhr.