我有2个数据数组,我想比较并删除重复项。我有一个MasterArray和一个CompareArray。我想删除MasterArray中的所有重复项。我有点工作,但它目前区分大小写,我需要删除。这是我在努力的地方。
“项目C”和“e”不应该在列表中,因为它不区分大小写。
$MasterArray = array("Item A", "ITEM B", "ITEM C", "d", "E");
$CompareArray = array("Item A", "B", "item c", "d", "e");
$UniqueArray = array_unique( array_merge($MasterArray, $CompareArray) );
$MasterArray = array_diff($UniqueArray, $MasterArray);
print_r($MasterArray); exit;
答案 0 :(得分:0)
首先将所有值转换为小写(或大写,具体取决于您的需要):
$MasterArray = array_map('strtolower', $MasterArray);
$CompareArray = array_map('strtolower', $CompareArray);
然后你可以进行比较:
$UniqueArray = array_unique( array_merge($MasterArray, $CompareArray) );
$MasterArray = array_diff($UniqueArray, $MasterArray);
print_r($MasterArray);
答案 1 :(得分:0)
$MasterArray = array("Item A", "ITEM B", "ITEM C", "d", "E");
$CompareArray = array("Item A", "B", "item c", "d", "e");
print_r( array_udiff($MasterArray, $CompareArray, 'strcasecmp') );
答案 2 :(得分:0)
您可以编写自己的功能,使用新阵列 $ items 来存储唯一值,使用 $ dups 来存储副本。然后你所要做的就是从$ items中消除$ dups并返回它的值。
对于这种情况,您可以使用以下功能 removedups 。
function removedups ($MasterArray, $CompareArray) {
$items = array();
$dups = array();
$MasterArray = array_merge($MasterArray, $CompareArray);
foreach ($MasterArray as $item) {
$lowercased_item = strtolower($item);
if (isset($items[$lowercased_item])) {
unset($items[$lowercased_item]);
$dups[] = $lowercased_item;
}
elseif (!in_array($lowercased_item,$dups)) {
$items[$lowercased_item] = $item;
}
}
return array_values($items);
}
$MasterArray = array("Item A", "ITEM B", "ITEM C", "d", "E");
$CompareArray = array("Item A", "B", "item c", "d", "e");
$MasterArray = removedups($MasterArray, $CompareArray);
print_r($MasterArray); exit