Мне нужна помощь в сортировке и подсчете экземпляров слов в строке.
Допустим, у меня есть коллекция слов:
счастливые красивые счастливые линии груша джин счастливые линии рок счастливые линии груша
Как я могу использовать php для подсчета каждого экземпляра каждого слова в строке и вывода его в цикле:
There are $count instances of $word
Чтобы вывести вышеприведенный цикл:
Есть четыре примера счастливых.
Существует 3 экземпляра строк.
Есть два случая джина ….
Используйте комбинацию 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.