phpbar.de logo

Mailinglisten-Archive

[php] Sortieren eines Arrays

[php] Sortieren eines Arrays

Ralf Geschke ralf_(at)_php-experiments.de
Thu, 04 Jan 2001 15:20:19 +0100


Dennis Duggen wrote:
> 
> > Bringt Dich natsort() weiter? Ist wirklich eine Frage, ich hab's
> > bislang noch nicht ausprobiert. ;-)
> 
> natsort() bringt mich nicht wirklich weiter! Sortiert ja nur alphanumerische
> Zeichen natürlich!

Ahh ja. Und was willst Du sortieren? *staun*

Nun denn, ich hab's nun ausprobiert, und Egons Vorschlag bringt
einen wirklich weiter. Dennoch verhalten sich die Funktionen
IMHO etwas verwirrend (kann daran gelegen haben, dass ich die sort-
Geschichten vorher wirklich noch nie benutzt habe).

<?php

$ar = array(
    "Zoo.jpg",
    "haus.jpg",
    "haus2.jpg",
    "igel.jpg",
    "bla.jpg",
    "stein.jpg",
    "Hallo.jpg"
    );

print "unsortiert:<p>";
for ($i = 0 ; $i < count($ar) ; $i++)
{
    print $ar[$i] . "<br>";
}
natcasesort($ar);
// print_r($ar);
print "<p>sortiert:<p>";
reset($ar);
while (list($dummy,$el) = each($ar))
{
    
    print $el . "<br>";
}
?>

Heisst: Waehrend man das Array in der ersten Schleife
normal durchlaufen kann, wuerde die gleiche for-Schleife
nach dem natcasesort() zum gleichen Ergebnis fuehren
wie unsortiert. Denn es werden nicht die Elemente 
anhand der Indizes sortiert, sondern es wird nur die Reihenfolge
der Elemente im Array geaendert, was dazu fuehrt, dass die 
"alten" Indizes den Elementen zugeordet bleiben und man
die sortierte Ausgabe nur mit der zweiten (while) Schleife
erhaelt. Interessant... Haette ich anders erwartet, aber na 
gut. ;-)

Beste Gruesse,
   Ralf


php::bar PHP Wiki   -   Listenarchive