比较重复的单词并将它们从 php 中的字符串中删除

一个字符串如下所示:

 $string = 'Super this is a test this is a test';

输出应该是:

Super

我正在尝试从字符串中完全删除重复的单词。我发现的是:

 echo implode(' ',array_unique(explode(' ', $string)));

但这是输出:

 Super this is a test

感谢您提供一个简单的方法来做到这一点。


互换的青春
浏览 80回答 2
2回答

慕丝7291255

这是因为array_unique()将重复项减少到一个值:接受一个输入数组并返回一个没有重复值的新数组。源代码您需要先循环数组(尽管可以想象很多有创意的 array_filter/array_walk 东西):$string = 'Super this is a test this is a test';# first explode it$arr = explode(' ', $string);# get value count as var$vals = array_count_values($arr);foreach ($arr as $key => $word){    # if count of word > 1, remove it    if ($vals[$word] > 1) {        unset($arr[$key]);    }}# glue whats left togetherecho implode(' ', $arr);小提琴作为一般项目使用的功能:function rm_str_dupes(string $string, string $explodeDelimiter = '', string $implodeDelimiter = ''){    $arr = explode($explodeDelimiter, $string);    $wordCount = array_count_values($arr);    foreach ($arr as $key => $word)    {        if ($wordCount[$word] > 1) {            unset($arr[$key]);        }    }    return implode($implodeDelimiter, $arr);}# example usageecho rm_str_dupes('Super this is a test this is a test');

慕婉清6462132

您也可以使用数组函数并在一行中执行此操作,而无需使用foreach.echo implode(' ', array_keys(array_intersect(array_count_values(explode(' ', $string)),[1])));
打开App,查看更多内容
随时随地看视频慕课网APP