数组中只有唯一元素

有一个提要,我从中接收数据,有时会出现非常相似的记录。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 


犯罪嫌疑人X
浏览 194回答 2
2回答

冉冉说

问题在于解析器没有传输正确的源。回收了数组结构,现在它正在工作。我也从这里获得了一些想法 -&nbsp;相似性算法建议,使用二维关联数组如果有人知道一个好的,仍然受支持的RSS解析器(NodeJs,Php),可以将源组合成一个,如果你能链接到它,我将不胜感激。

小怪兽爱吃肉

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; }}
打开App,查看更多内容
随时随地看视频慕课网APP