数组中唯一的元素
Only unique elements in an array
有一个我从中接收数据的提要,有时其中会出现非常相似的记录。
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
谢谢!
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;
}
}
}
问题是解析器没有传输正确的提要。回收阵列结构,现在它正在工作。我也从这里得到了想法 -
如果有人知道可以将提要合并为一个的良好且仍然受支持的 RSS 解析器(NodeJs,Php),我将不胜感激link。
有一个我从中接收数据的提要,有时其中会出现非常相似的记录。 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
谢谢!
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;
}
}
}
问题是解析器没有传输正确的提要。回收阵列结构,现在它正在工作。我也从这里得到了想法 -
如果有人知道可以将提要合并为一个的良好且仍然受支持的 RSS 解析器(NodeJs,Php),我将不胜感激link。