PHP: найдите наиболее часто встречающиеся слова в строке или массиве - PullRequest
2 голосов
/ 02 апреля 2012

Я знаю, что могу использовать этот способ, чтобы найти самый частый элемент в массиве:

(поправьте меня, если я ошибаюсь)

$array = array('good', 'good', 'good', 'cool');     
$array = array_count_values($array);
$array = array_keys($array);
$element = $array[0]

Как насчет того, чтобы найти наиболее часто встречающееся слово (а) вместо наиболее часто встречаемого элемента:

(В данном случае это будут слова apple и me)

$array = array('apple bb','cc apple','d','ccc ab','apple ccccc','cc cccc me me me')

Если я преобразую массив в строку, используя сначала implode,

Как мне найти его / их самым простым способом?

И какие еще методы я могу использовать, чтобы найти его / их без implode, а затем explode?

Ответы [ 5 ]

3 голосов
/ 02 апреля 2012

Не знаю, во втором сегменте вашего вопроса, во-первых, вот функция, которую я нашел в WebDeveloper

function array_most_common($input) 
{ 
  $counted = array_count_values($input); 
  arsort($counted); 
  return(key($counted));     
}
3 голосов
/ 02 апреля 2012

Лучший способ - это, как вы упомянули implode() и explode()

$array = array('apple bb','cc apple','d','ccc ab','apple ccccc','cc cccc');
$array2 = array_count_values(explode(' ', implode(' ', $array)));
echo key($array2);
2 голосов
/ 18 августа 2016

Один из рабочих способов найти наиболее часто встречающиеся / повторяющиеся слова в строке или в массиве.использование PHP

В строке

<?php

$str = "hi its me . hi its me .hello its me hi";

$array = explode(" ",$str);

$array = array_count_values($array);

arsort($array);

$highest = current($array);

foreach($array as $key=>$value)
    if($value == $highest)
        $repeat[] = $key;
?>

здесь $repeat[] содержит наиболее повторяющиеся слова в строке.

2 голосов
/ 02 апреля 2012

str_word_count () работает со строкой, что означает, что вам нужно только взорваться, а не взорваться снова: и использование второго аргумента, равного 1, будет подсчитывать вхождения каждого слова. Самым большим преимуществом является то, что он принимает во внимание знаки препинания при разбиении предложения.

1 голос
/ 02 апреля 2012

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

<?php

function getMostFrequentInArray($array)
{

   // e.g. $array = array('apple bb','cc apple','d','ccc ab','apple ccccc','cc cccc');

   $token_array = array();

   for ($array as $item)
   {
        $token_array[] = explode(" ",$item);
   }

   $array_by_frequency = array_count_values($token_array);
   $element = $array_by_frequency[0];

   return $element;
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...