Array in Alphabet sortieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktuellen wortes
alphabet
anfangsbuchstabe
array
ausreichend danke
bastion
baum
code
effekt
erstes wort
http
hummer
manual
match
rang
schieben
sortierten array
teppich
url
zahn
-
Hiho,
der Titel ist etwas blöd gewählt, mir fiel aber gerade nichts besseres ein :D
Ich habe ein Array $matches[2], welches ich alphabetisch mittels asort sortieren lasse.
Was wäre der geschickteste Weg, dies zu kategorisieren?
Array:
Abraham Bebraham Cebraham
Soll werden:
A Abraham B Bebraham C Cebraham
Jemand eine Idee? Es sollte wenn möglich nicht nötig sein, 26x so ziemlich das Selbe schreiben zu müssen :) Es handelt sich übrigens nicht um MySQL Datensätze :)
EDIT:
Okay... Ich habs - Nicht schön, aber selten :D
foreach(range('A','Z') as $i) { $matches[2][] = $i; } asort($matches[2]);
Beitrag zuletzt geändert: 20.5.2011 14:26:35 von fabo -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also du hast das schon alles in einem sortierten Array?
Dann musst du doch nur gucken ob der Anfangsbuchstabe des vorherigen Wortes != dem Anfangsbuchstaben des aktuellen Wortes ist.
Ist dies der Fall musst du bei der Ausgabe bloß den Anfangsbuchstaben des aktuellen Wortes zwischen schieben.
Also als kurzes Pseudocode:
//Erstes wort muss manuell ausgegeben werden: echo substr($woerter[0],0,1)."<br>"; echo $woerter[0]."<br>"; for($i=1;i<$woerter.count;i++){ if(substr($woerter[i],0,1)!=substr($woerter[i-1],0,1){ echo substr($woerter[i],0,1)."<br>"; } echo $woerter[i]."<br>"; }
-
Danke, habs ja mittlerweile. Ich habe einfach das Alphabet ans Array angehangen und das Array danach sortiert. Hat so ziemlich den selben Effekt und für mein Vorhaben war das auch ausreichend :)
Danke trotzdem. -
Mein Lösungsansatz:
<?php $arr = array("Auto", "Baum", "Bastion", "Hand", "Haus", "Hummer", "Zepra", "Tisch", "Teppich"); sort($arr); foreach($arr AS $item) { $ersterBuchstabe = substr($item, 0, 1); $newArr[$ersterBuchstabe][] = $item; } foreach($newArr AS $item) { echo "<h3>".strtoupper(substr($item[0], 0, 1))."</h3>"; echo "<ul>"; foreach($item AS $word) { echo "<li>".$word."</li>"; } echo "</ul>"; } ?>
-
Meine Lösung:
$arr = array('peter', 'hans', 'auge', 'zahn'); usort($arr, 'cmp');
http://www.php.net/manual/de/function.usort.php
usort sortiert nach Value und erneuert den key dabei gleichzeitig. Das wäre vllt was schöneres und einfacheres, oder?
http://www.php.net/manual/de/book.array.php
Hier findet man alle Funktionen für arrays, dahinter steht dann kurz was sie bringen, da kann man schnell gute Dinge finden :)
viel Erfolg und liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage