Sven Rautenberg: Sortierprobleme

Beitrag lesen

Moin!

ich erhalte mit foreach immer einen Wert plus eins. Erstens weiss ich nicht, was ich mit der Erhöhung soll, und zweitens kriege ich eine Alphabetische Sortierung als Ergebniss (Was aber nicht die Aufgabenstellung ist ich will absteigend nach häufigkeit sortieren??)

Du wendest asort falsch an.

Schau dir die Befehlsbeschreibung und die Beispiele zu asort an. asort sortiert einmalig dein Array. Du hast aber folgenden Code:

  
  $doppelteWorte = preg_split('/[ ]+/',$content);  
  $gezaehlteWorte = array_count_values($doppelteWorte);  
  foreach($gezaehlteWorte as $key);  
  {  
  print_r(asort($key));  
  }  

Du hast eine Schleife, die alle Arrayelemente durcharbeitet - und das jeweilige Element sortierst du dann.

Abgesehen davon: Schmeiß doch bitte mal print_r auf den Müll. Diese Funktion listet dir formatiert einen Variableninhalt auf, ist aber nahezu ausschließlich zum Debuggen nutzbar, und nicht für vernünftige Textausgabe.

Benutze echo, wenn du Text ausgeben willst.

  1. Ausserdem erhalte ich einen neuen Schlüssel dadurch wenn ich das richtig gelesen habe. Aber wozu brauche ich den neuen Schlüssel, wenn ich doch durch die Sortierung (asort) schon einen habe??????

Du kriegst keine neuen Schlüssel. Die existierenden Schlüssel nach array_count_values() sind die gefundenen Worte. Die Werte sind die Anzahlen dieser Worte.

asort() sortiert die Werte des Arrays, und läßt die Zuordnung Wert<->Schlüssel intakt. Das ist wichtig, weil du sonst ja nicht mehr weißt, welches Wort das war, das am häufigsten vorkam.

Und die foreach-Schleife hat zwei Anwendungsmethoden. Die erste hast du benutzt - damit kriegst du aber nur den Wert aus dem Array. Die zweite Methode liefert dir den Wert UND den Schlüssel des Arrays.

- Sven Rautenberg

--
My sssignature, my preciousssss!