Sven Rautenberg: Sortierprobleme

Beitrag lesen

Moin!

Ich will einen Text auslesen, und die Worte zählen. Danach sollen die Worte sortiert werden, und zwar nach ihrer Anzahl werden.Mit dem auslesen funktioniert so weit alles. Aber das sortieren funktioniert nicht.

Logisch. Denn das ist genau das, was du programmiert hast. Ich habe in deinen Code mal Kommentare integriert.

  

> <pre>  
> <!--Sortierung läuft alphabetisch?-->  
>   <?  
>   $anzahlWorte = preg_split('/[ ]+/',$content);  

// Entgegen deiner Variablenbezeichnung hast du hier kein Array mit der Anzahl von Worten, sondern ein Array mit allen Worten.  

>   sort($anzahlWorte);  

// Hier sortierst du deine Worte alphabetisch - was sinnlos ist, wenn du sie hinterher noch zählen willst.  

>   print_r(array_count_values($anzahlWorte));  

// Hier verwirrst du dich selbst, indem du die richtige Funktion benutzt, aber deren Ergebnis nicht speicherst und später weiterverwendest.  

>   ?>  
>   
> <!--Versuch einer Schleife die erst auszählt, und dann sortiert aber leider nur den Wert 1 zurückwirft-->  
> <?  
> $doppelteWorte = preg_split('/[ ]+/',$content);  

// Dasselbe wie oben: Nicht nur doppelte Worte werden hier ermittelt.  

> $gezaehlteWorte = array_count_values($doppelteWorte);  

// Das ist korrekt, damit erhälst du alle Worte als Arrayschlüssel, und deren Anzahl als Arraywert ermittelt.  

> print_r(sort($gezaehlteWorte));  

// Die Funktion sort() weist den Arraywerten neue Arrayschlüssel zu (numerisch aufsteigend) - damit verlierst du die Info, was das für ein Wort war, welches am häufigsten, zweithäufigsten... enthalten war.  
// Verwende asort() - damit bleiben die Arrayschlüssel erhalten, und werden nur in die richtige Reihenfolge gebracht. Ausgabe dann mit foreach.  

> ?>  
>   
> </pre>  
> <br>  

- Sven Rautenberg

--
My sssignature, my preciousssss!