为了账号安全,请及时绑定邮箱和手机立即绑定

数组中只有唯一元素

数组中只有唯一元素

PHP
犯罪嫌疑人X 2022-08-05 16:25:22
有一个提要,我从中接收数据,有时会出现非常相似的记录。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 Trailer5. The Elder Scrolls Online: The Dark Heart of Skyrim Announcement Cinematic 
查看完整描述

2 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

问题在于解析器没有传输正确的源。回收了数组结构,现在它正在工作。我也从这里获得了一些想法 - 相似性算法建议,使用二维关联数组

如果有人知道一个好的,仍然受支持的RSS解析器(NodeJs,Php),可以将源组合成一个,如果你能链接到它,我将不胜感激。


查看完整回答
反对 回复 2022-08-05
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

I have not tested but I think one of these should work for you.


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

    if(!strtolower(trim($item->get_title())),$new){

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

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

        $goodFeed[] = $item;

        $itemlimit = $itemlimit + 1;

    }

}


-------OR-------


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

    if(!strtolower(trim($item->get_title())),$new){

        if(count($new)>0){

            $percent=0;

            foreach($new as $n){

                similar_text($n, strtolower(trim($item->get_title())), $percent);

                if($percent>78){

                    break;

                }

            }

            if($percent>78){

                    continue;

            }


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

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

            $goodFeed[] = $item;

            $itemlimit = $itemlimit + 1;

        }

        else{

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

            $goodFeed[] = $item;

            $itemlimit = $itemlimit + 1;

        }

    }

}


查看完整回答
反对 回复 2022-08-05
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信