php: сортировка и подсчет экземпляров слов в заданной строке

Мне нужна помощь в сортировке и подсчете экземпляров слов в строке.

Допустим, у меня есть коллекция слов:

счастливые красивые счастливые линии груша джин счастливые линии рок счастливые линии груша

Как я могу использовать php для подсчета каждого экземпляра каждого слова в строке и вывода его в цикле:

There are $count instances of $word 

Чтобы вывести вышеприведенный цикл:

Есть четыре примера счастливых.

Существует 3 экземпляра строк.

Есть два случая джина ….

Solutions Collecting From Web of "php: сортировка и подсчет экземпляров слов в заданной строке"

Используйте комбинацию 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); 

дает

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

1 в str_word_count() заставляет функцию возвращать массив всех найденных слов.

Чтобы отсортировать записи, используйте arsort() (она сохраняет ключи):

 arsort($words); print_r($words); Array ( [happy] => 4 [lines] => 3 [pear] => 2 [rock] => 1 [gin] => 1 [beautiful] => 1 ) 

Попробуй это:

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

Результат:

 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.