如何使用PHP从数组中删除重复元素?

时间:2014-01-31 09:52:27

标签: php arrays duplicates

嗨,这是我的var_dump结果。我的问题是:如果我的数组包含多个相同的“名称”(在我的情况下为“Test2”),则删除其中一个。就我而言,来自[0]或[1]的所有信息。 THX。

array(3) {
  [0]=>
  object(stdClass)#24 (14) {
    ["name"]=>
    string(19) "Test2"
    ["taskid"]=>
    string(5) "11526"
  }
  [1]=>
  object(stdClass)#25 (14) {
    ["name"]=>
    string(19) "Test2"
    ["taskid"]=>
    string(5) "11526"
  }
  [2]=>
  object(stdClass)#26 (14) {
    ["name"]=>
    string(19) "Test1"
    ["taskid"]=>
    string(5) "11525"
  }
}

我想要这个结果:

array(3) {
      [0]=>
      object(stdClass)#24 (14) {
        ["name"]=>
        string(19) "Test2"
        ["taskid"]=>
        string(5) "11526"
      }
      [1]=>
      object(stdClass)#26 (14) {
        ["name"]=>
        string(19) "Test1"
        ["taskid"]=>
        string(5) "11525"
      }
    }

2 个答案:

答案 0 :(得分:1)

在你的例子中,dublicates不是数组而是对象,所以你需要像array_maparray_unique这样组合:

$arrayResult = array_map("unserialize", array_unique(array_map("serialize", $inputArray)));

或尝试

$arrayResult = array();
foreach ( $inputArray as $item ) {
    isset($arrayResult[$item->taskid]) or $arrayResult[$item->taskid] = $item;
}

var_dump($arrayResult); 

答案 1 :(得分:0)

您可以使用array_unique()函数