好的,所以当我弄脏PHP时,我开始玩数组,字符串等。
现在我知道数组有一个称为“array_count_values”的简洁功能,它可以帮助确定最重复的条目是什么。我无法找到相应的字符串 - 我需要将字符串转换为数组吗?
基本上,我希望我的代码能够确定给定字符串中最常见(重复)单词超过一定长度的内容。
没有字符长度限定,这段代码可以找到数组中重复次数最多的单词问题的答案:
<?php
$param[0]="Ted";
$param[1]="Mark";
$param[2]="Mark";
$param[3]="Ross";
$param[3]="Clarence";
function array_most_common($arr)
{
$counted = array_count_values($arr);
arsort($counted);
return(key($counted));
}
$mostCommon = array_most_common($param);
echo $mostCommon;
?>
那么用字符串做什么呢?还有一个字符量过滤器?
答案 0 :(得分:2)
使用字符串,您可以在空格上explode()
或preg_split()
形成一个数组。使用preg_split()
是有利的,因为它会消除explode()
不会出现的重复和无关的空白。
$array = preg_split( '/\s+/', "This is a pretty long long long string", -1, PREG_SPLIT_NO_EMPTY);
然后,一旦有了数组,使用array_filter()
删除那些不符合字符要求的数组:
$threshold = 3;
$filtered = array_filter( $array, function( $el) use( $threshold) {
return strlen( $el) > $threshold;
});
获得$filtered
数组后,只需在array_count_values()
中使用该数组。
$counts = array_count_values( $filtered);
arsort( $counts);
echo key( $counts) . ' -> ' . current( $counts);
Here是一个演示版,可以打印:
long -> 3
答案 1 :(得分:1)
要回答你的问题,就我所知,没有确定字符串中最常用字的功能。但是,您可以explode()
按空格填充字符串,而array_count_values()
代替结果数组。我不太确定“字符数量过滤器”是什么意思,或者你计划实现它的目的。
答案 2 :(得分:1)
$str = strtolower("The quick brown fox jumps over the lazy dog");
$words = explode(" ", $str);
$words = array_filter($words, function($word) {
return strlen($word) > 2;
});
$word_counts = array_count_values($words);
arsort($word_counts);
$most_common_word = key($word_counts); // Returns "the"