我知道我可以用这种方式找到数组中最常见的元素:
(如果我错了,请纠正我)
$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
的情况下找到它/它们吗?
答案 0 :(得分:3)
最好的方法就是这样,正如您提到的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);
答案 1 :(得分:3)
不知道你问题的第二部分,首先,这是我在WebDeveloper找到的一个功能
function array_most_common($input)
{
$counted = array_count_values($input);
arsort($counted);
return(key($counted));
}
答案 2 :(得分:2)
str_word_count()适用于字符串,这意味着您只需要内爆,而不是再次爆炸:使用第二个参数1将计算每个单词的出现次数。它的最大优点是在分割句子时会考虑标点符号。
答案 3 :(得分:2)
找到字符串或数组中最常见/重复的单词的一种工作方式。使用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[]
包含字符串中最重复的单词。
答案 4 :(得分:1)
试试这个:
<?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;
}
?>
答案 5 :(得分:0)
function highfreqwords($arr){
$counts = array_count_values(str_word_count(implode(" ",$arr),1));
arsort($counts);
return $counts;
}
算法
str_word_count(array,1)
返回该大句子中的所有单词。array_count_values(array)
计算所有值arsort()
以降序缩短关联数组