如何从PHP中的数组中删除重复/包含

柴瓦乔

我在php中设置了数组。我需要从下面的代码中删除重复/包含记录。

Array ( 
    [0] => Array ( [percent] => 88.461538461538 [basenum] => 079 [code] => HL [group] => 0 )
    [1] => Array ( [percent] => 88.461538461538 [basenum] => 097 [code] => HL [group] => 0 )
    [2] => Array ( [percent] => 88.461538461538 [basenum] => 709 [code] => HL [group] => 0 )
    [3] => Array ( [percent] => 88.461538461538 [basenum] => 790 [code] => HL [group] => 0 )
    [4] => Array ( [percent] => 88.461538461538 [basenum] => 907 [code] => HL [group] => 0 )
    [5] => Array ( [percent] => 88.461538461538 [basenum] => 907 [code] => TL [group] => 0 ) // This will not removed because of 'code' different in array
    [6] => Array ( [percent] => 88.461538461538 [basenum] => 907 [code] => HL [group] => 1 ) // This will not removed because of 'group' different in array
))

元素 1、2、3、4、5 将被删除,因为basenum包含在元素 0 中。所以预期的结果/新数组应该是

Array (
    [0] => Array ( [percent] => 88.461538461538 [basenum] => 079 [code] => HL [group] => 0 ) 
    [1] => Array ( [percent] => 88.461538461538 [basenum] => 907 [code] => TL [group] => 0 )
    [2] => Array ( [percent] => 88.461538461538 [basenum] => 907 [code] => HL [group] => 1 )
)

谢谢大家的回答。

缺口

由于basenum如果值包含相同的字符集,则它们是等效的,因此此代码将执行您想要的操作。通过对每个值中的字符进行排序并比较结果数组来compare_basenum检查两个basenum值是否相同。在循环中,我们查看具有匹配 basenum 的所有值,并查看codeorgroup值是否相同,如果不相同,我们将该值添加到输出中。

function compare_basenum($b1, $b2) {
    $b1 = str_split($b1);
    sort($b1);
    $b2 = str_split($b2);
    sort($b2);
    return $b1 === $b2;
}

$newdata = array();
foreach ($data as $d) {
    $matching_basenums = array_filter($newdata, function ($v) use ($d) { return compare_basenum($v['basenum'], $d['basenum']); });
    if (!count($matching_basenums) || 
        !in_array($d['code'], array_column($matching_basenums, 'code')) || 
        !in_array($d['group'], array_column($matching_basenums, 'group'))) {
        $newdata[] = $d;
    }
}
print_r($newdata);

输出(基于以下 OP 评论的更新数据):

Array ( 
    [0] => Array ( [percent] => 88.461538461538 [basenum] => 079 [code] => HL [group] => 8 )
    [1] => Array ( [percent] => 88.461538461538 [basenum] => 709 [code] => HL [group] => 0 )
    [2] => Array ( [percent] => 88.461538461538 [basenum] => 907 [code] => TL [group] => 0 )
    [3] => Array ( [percent] => 88.461538461538 [basenum] => 907 [code] => HL [group] => 1 ) 
)

3v4l.org 上的演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从php中的关联数组中删除重复的条目

来自分类Dev

在PHP中从数组中删除重复的单词

来自分类Dev

从Php中的数组中删除重复的对象

来自分类Dev

PHP从数组中删除重复的对象

来自分类Dev

从PHP数组中删除重复的值

来自分类Dev

从PHP数组中删除重复项

来自分类Dev

从多维php数组中删除重复项

来自分类Dev

如何从数组中删除重复的数字?

来自分类Dev

如何从数组列表中删除重复的文件

来自分类Dev

Ruby:如何从数组中删除重复的行?

来自分类Dev

如何从多维数组中删除重复条目?

来自分类Dev

如何从数组中删除重复点?

来自分类Dev

如何删除数组中的重复项?

来自分类Dev

在PHP中删除多维数组中的重复数组

来自分类Dev

如何从PHP中获取包含重复项的数组中的前3个位置(值)

来自分类Dev

如何从php中的数组中删除带有特殊字符的重复值

来自分类Dev

PHP删除多维数组中的重复数组

来自分类Dev

删除PHP中的重复

来自分类Dev

从PHP中的多维数组中删除重复的值

来自分类Dev

在PHP中删除数组中的重复项

来自分类Dev

从PHP中的多维数组中删除重复的值

来自分类Dev

从PHP中的两个数组中删除重复项

来自分类Dev

用PHP中的句子删除数组中的重复单词

来自分类Dev

在PHP中,如何删除对象数组中的重复项,其中重复项定义为具有相同值的键值对的子集

来自分类Dev

如何基于javascript中的条件从数组中删除重复的对象

来自分类Dev

如何从Java中的并行数组中删除重复项?

来自分类Dev

如何从 Swift 5 中的数组中删除重复元素?

来自分类Dev

从数组中删除重复的值

来自分类Dev

从数组中删除重复项

Related 相关文章

热门标签

归档