kostenloser Webspace werbefrei: lima-city


Array in Alphabet sortieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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>";
    }
  4. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    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.
  5. t*****b

    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>";
    		
    	}
    	
    ?>
  6. g****e

    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
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!