2010-06-06 18 views
15

Potrzebuję pomocy w sortowaniu i liczeniu wystąpień słów w ciągu znaków.php: sortowanie i liczenie wystąpień słów w danym ciągu znaków

Powiedzmy mam zbiór słów:

Happy piękne szczęśliwe linie gruszka gin szczęśliwe linie kołysać szczęśliwe linie gruszka

Jak mogłem używać php liczyć każde wystąpienie każdego słowa w łańcuch i wyjście to w pętli:

There are $count instances of $word 

więc, że powyższa pętla będzie wyjście:

Istnieją 4 przykłady szczęścia.

Istnieją 3 wystąpienia linii.

Są 2 przypadki gin ....

Odpowiedz

50

Użyj kombinacji str_word_count() i array_count_values():

$str = 'happy beautiful happy lines pear gin happy lines rock happy lines pear '; 
$words = array_count_values(str_word_count($str, 1)); 
print_r($words); 

daje

Array 
(
    [happy] => 4 
    [beautiful] => 1 
    [lines] => 3 
    [pear] => 2 
    [gin] => 1 
    [rock] => 1 
) 

1 w str_word_count() sprawia funkcję Zwróć tablicę wszystkich znalezionych słów.

Aby posortować wpisy, użyj arsort() (zachowuje klucze):

arsort($words); 
print_r($words); 

Array 
(
    [happy] => 4 
    [lines] => 3 
    [pear] => 2 
    [rock] => 1 
    [gin] => 1 
    [beautiful] => 1 
) 
+0

Wow, to było mądre. –

+0

+1 rzeczywiście ...... – zaf

+0

Jak mogę użyć tego z akcentem? Przykład: Épée –

5

Spróbuj tego:

$words = explode(" ", "happy beautiful happy lines pear gin happy lines rock happy lines pear"); 
$result = array_combine($words, array_fill(0, count($words), 0)); 

foreach($words as $word) { 
    $result[$word]++; 
} 

foreach($result as $word => $count) { 
    echo "There are $count instances of $word.\n"; 
} 

Wynik:

There are 4 instances of happy. 
There are 1 instances of beautiful. 
There are 3 instances of lines. 
There are 2 instances of pear. 
There are 1 instances of gin. 
There are 1 instances of rock. 
Powiązane problemy