ChrisB: Höchste Variable

Beitrag lesen

Hi,

Gut:
0 = bringt mir nur die Anzahl Wörter..? Kann ich ja nicht brauchen in meiner Situtation
1 = gibt mir ein Array mit den Wörter zurück
2 = Array ( [0] => rot [4] => blau [9] => gelb [14] => gruen [20] => blau [25] => gelb [30] => gruen [36] => blau [42] => gruen )

Aber ich verstehe nicht wie ich es weiterverarbeiten kann.. da ich anfänger bin

Hoer bitte auf, dich darauf zu berufen - und versuche mal selbst ein bisschen Hirnschmalz zu investieren, um zu einer Loesung zu kommen.

Den Format-Parameter von str_word_count auf 1 zu setzen, bringt uns also schon mal ein Array mit den einzelnen Woertern, fein.

$s = 'rot blau blau gruen blau rot gelb';  
print_r($a = str_word_count($s, 1));

ergibt also:

Array
(
    [0] => rot
    [1] => blau
    [2] => blau
    [3] => gruen
    [4] => blau
    [5] => rot
    [6] => gelb
)

Was koennten wir denn damit jetzt anstellen? Wir haben ein Array, also schauen wir uns doch mal die Array-Funktionen im Handbuch an ... hm, mal sehen ... hey, array_count_values — "zählt die Werte eines Arrays", das klingt doch schon mal interessant, nicht?

Wenden wir das mal auf unser Array an,
print_r($c = array_count_values($a));
so erhalten wir

Array
(
    [rot] => 2
    [blau] => 3
    [gruen] => 1
    [gelb] => 1
)

Ui, schau mal an, irgendwelche Heinzelmaennchen haben die Woerter fuer uns gezaehlt - itt dat nich lieb?

Wenn wir das jetzt mal sortieren -

[link:http://www.php.net/manual/de/function.arsort.php@title=arsort]($c);  
print_r($c);
  • dann erhalten wir:

Array
(
    [blau] => 3
    [rot] => 2
    [gelb] => 1
    [gruen] => 1
)

Schau an, jetzt steht das haeufigste Wort schon an erster Stelle.

Jetzt muessen wir nur noch rauskriegen, dass diese Wort "blau" lautet. Dummerweise ist es momentan der Schluessel unseres Arrays.
Na gut, wenden wir mal fix array_keys drauf an -
print_r($k = array_keys($c));

  • und wir erhalten:

Array
(
    [0] => blau
    [1] => rot
    [2] => gelb
    [3] => gruen
)

Schau mal einer an, jetzt steht also "blau", unser haeufigstes Wort, fein am Anfang des Arrays - wir koennten also bspw. mittels $k[0] direkt darauf zugreifen.

Na, war das jetzt so schwer, mal ein paar Funktioenchen halbwegs intelligent zu kombinieren ...?

Und was wir bspw. machen, wenn mehrere Woerter mit der gleichen Haeufigkeit vorkommen - das ueberlegst *du* jetzt bitte mal.

MfG ChrisB