【问题标题】:removing duplicate from 2D array从二维数组中删除重复项
【发布时间】:2014-07-25 23:30:03
【问题描述】:

我有一个二维数组,我想从中删除重复的数组,

var dump 看起来像这样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>";
                }
            }
        }
   }

我错过了什么吗?

【问题讨论】:

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


【解决方案1】:

您可以使用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' 是您希望从中删除重复项的列

【讨论】:

  • 我只是粘贴了我数组的一个小sn-p,实际上我的数组包含的不止这些,比如电子邮件、ID、联系电话等,我只是想检查电子邮件上的重复项,所以我无法使用此功能
  • 那么你正在寻找stackoverflow.com/questions/19219362/…中的东西
  • 您的代码将是: $output = array_intersect_key($input, array_unique(array_column($input, 'Email')));
  • 谢谢,上面说的是对未定义函数的调用,其他例子中的 $item 和 $result 是什么?
【解决方案2】:

array_unique($array);

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

等等!

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-11-06
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 2013-12-18
      • 2018-07-26
      相关资源
      最近更新 更多