从2D数组中删除重复项

时间:2014-07-25 23:30:03

标签: php arrays multidimensional-array foreach duplicate-removal

我有一个2D数组,我想从中删除重复项,

var转储看起来像这个1=>abc.com. 2=>acc.com, 3=>abc.com所以我想删除abc.com的第二次出现,即我要删除3=>abc.com

我尝试使用嵌套循环,但代码无效。

 foreach ($var as $m)
   {
        foreach ($var as $s)
        {
                if(isset($m['Email'])){
                    if($m['Email'] == $s['Email']){
                    echo 'matched with '.$s['Email'];
                    echo '</br>';
                    unset($s);
                    //echo $v['Email'];
                    //echo "<br>";
                }
            }
        }
   }

我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

您可以使用array_unique function

编辑:以下是Here (Codepad)

的代码和输出

<强> PHP

<?php
$input = array("1" => "abc.com", "2" => "acc.com", "3" => "abc.com");
$result = array_unique($input);
print_r($result);
?>

<强>输出

Array
(
    [1] => abc.com
    [2] => acc.com
)

Edit2:要删除特定列中的重复项,只需使用

即可
$output = array_intersect_key($input, array_unique(array_column($input, 'Email')));

其中$ input是完整数组,'Email'是您希望从

中删除重复项的列

答案 1 :(得分:1)

array_unique($阵列);

你的嵌套foreach也有错误。假设您在上面发布的内容,您只需要一个foreach循环。如果你需要添加第二个,它应该基于你设置的临时变量,例如foreach($ table as $ row =&gt; $ key)..你可以做foreach($ key as $ item)

等!

答案 2 :(得分:1)

如果您只想删除重复项,可以使用array_unique

$arr = array(
    1 => "abc.com", 
    2 => "acc.com", 
    3 => "abc.com"
); 

$result = array_unique($arr);
print_r($result);