PHP - 如何比较两个数组并删除重复值区分大小写

时间:2016-09-30 13:43:44

标签: php arrays

我有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;

3 个答案:

答案 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)

array_udiff + strcasecmp;)

$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