只有数组中的唯一元素

有一个提要,我从中接收数据,有时其中会出现非常相似的记录。 https://dl4.joxi.net/drive/2020/01/17/0028/2950/1842054/54/5abb738180.jpg


我想确保数组包含最独特的记录。(按标题定义)


代码:



$new = array();

$goodFeed = array();


$itemlimit=0;

$itemlimit2=0;



foreach ($feed->get_items() as $item) {

    if ($itemlimit==50) { break; };

    $new[] = strtolower(trim($item->get_title()));

    $itemlimit = $itemlimit + 1;

}


foreach ($feed->get_items() as $item) {

    if ($itemlimit2==50) { break; };

    $itemTitle = strtolower(trim($item->get_title()));


    foreach($new as $item2) {

        similar_text($item2, $itemTitle, $percent);


        if ($percent < 78 && !in_array($item, $goodFeed)) {

                $goodFeed[] = $item;

                echo 'added: ' . $item->get_title() . '<br>Procent: ' . $percent . '<hr>';


        }

    }


    $itemlimit2 = $itemlimit2 + 1;

}

我只希望唯一值(最少 80%)保留在 $goodFeed 数组中。现在它包含彼此非常相似的元素。原始提要包含具有名称的元素:


1. Metro Redux on Nintendo Switch™ Announce Trailer; 

2. Metro Redux on Nintendo Switch™ Announce Trailer [NA]; 

3. Metro Redux für Nintendo Switch™ Ankündigungs-Trailer [DE]; 

4. Metro Redux on Nintendo Switch™ Announce Trailer [ANZ]; 

5. The Elder Scrolls Online: The Dark Heart of Skyrim Announcement Cinematic;

6. The Elder Scrolls Online - The Dark Heart of Skyrim Cinematic Announcement Trailer

他们都进入$goodFeed,我只想要这些:


1. Metro Redux on Nintendo Switch™ Announce Trailer

5. The Elder Scrolls Online: The Dark Heart of Skyrim Announcement Cinematic 

谢谢!


POPMUISE
浏览 112回答 2
2回答

宝慕林4294392

I have not tested but I think one of these should work for you.foreach ($feed->get_items() as $item) {&nbsp;&nbsp; &nbsp; if(!strtolower(trim($item->get_title())),$new){&nbsp; &nbsp; &nbsp; &nbsp; if ($itemlimit==50) { break; };&nbsp; &nbsp; &nbsp; &nbsp; $new[] = strtolower(trim($item->get_title()));&nbsp; &nbsp; &nbsp; &nbsp; $goodFeed[] = $item;&nbsp; &nbsp; &nbsp; &nbsp; $itemlimit = $itemlimit + 1;&nbsp; &nbsp; }}-------OR-------foreach ($feed->get_items() as $item) {&nbsp;&nbsp; &nbsp; if(!strtolower(trim($item->get_title())),$new){&nbsp; &nbsp; &nbsp; &nbsp; if(count($new)>0){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $percent=0;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach($new as $n){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; similar_text($n, strtolower(trim($item->get_title())), $percent);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($percent>78){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($percent>78){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($itemlimit==50) { break; };&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $new[] = strtolower(trim($item->get_title()));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $goodFeed[] = $item;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $itemlimit = $itemlimit + 1;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $new[] = strtolower(trim($item->get_title()));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $goodFeed[] = $item;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $itemlimit = $itemlimit + 1;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}

万千封印

问题是解析器没有传输正确的提要。回收了数组结构,现在它可以工作了。我也从这里得到了想法——相似度算法建议,使用二维关联数组如果有人知道可以将提要合并为一个的良好且仍受支持的 RSS 解析器(NodeJs,Php),如果您能链接到它,我将不胜感激。
打开App,查看更多内容
随时随地看视频慕课网APP