2010-06-06 30 views
15

Tôi cần trợ giúp sắp xếp và đếm các trường hợp của các từ trong một chuỗi.php: sắp xếp và đếm các trường hợp của các từ trong một chuỗi nhất định

phép nói rằng tôi có một bộ sưu tập về chữ:

hạnh phúc đường hạnh phúc đẹp lê gin đường hạnh phúc đá đường hạnh phúc lê

Làm thế nào tôi có thể sử dụng php để đếm từng thể hiện của mỗi từ trong chuỗi và đầu ra nó trong một vòng lặp:

There are $count instances of $word 

Vì vậy mà vòng lặp trên sẽ ra:

Có 4 trường hợp vui.

Có 3 trường hợp dòng.

Có 2 trường hợp của gin ....

Trả lời

50

Sử dụng một sự kết hợp của str_word_count()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); 

cho

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

Các 1 trong str_word_count() làm cho chức năng trả về một mảng của tất cả các từ tìm thấy.

Để sắp xếp các mục, sử dụng arsort() (nó bảo phím):

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

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

Wow, đó là thông minh. –

+0

+1 thực sự ...... – zaf

+0

Tôi có thể sử dụng từ này bằng từ nhấn mạnh như thế nào? Ví dụ: Épée –

5

Hãy thử điều này:

$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"; 
} 

Kết quả:

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. 
Các vấn đề liên quan