PHP - 删除数组中具有指定键重复值的元素

5

如果我有这样一个数组:

Array (
  [0]=>
  Array (
    ["id"]=> "1"
    ["desc"]=> "desc 1"
    ["type"]=> "T"
    ["date"]=> "17-JAN-12"
  )
  [1]=>
  Array (
    ["id"]=> "2"
    ["desc"]=> "desc 2"
    ["type"]=> "P"
    ["date"]=> "05-JAN-12"
  )
  [2]=>
  Array (
    ["id"]=> "1"
    ["desc"]=> "desc 3"
    ["type"]=> "P"
    ["date"]=> "15-JAN-12"
  )
  [3]=>
  Array (
    ["id"]=> "3"
    ["desc"]=> "desc 4"
    ["type"]=> "P"
    ["date"]=> "06-JAN-12"
  )
  [4]=>
  Array (
    ["id"]=> "2"
    ["desc"]=> "desc 5"
    ["type"]=> "T"
    ["date"]=> "06-JAN-12"
  )
 )

我希望您能够去除具有重复值的元素,只保留“id”键上的一组值,最终结果如下:

Array (
  [0]=>
  Array (
    ["id"]=> "1"
    ["desc"]=> "desc 1"
    ["type"]=> "T"
    ["date"]=> "17-JAN-12"
  )
  [1]=>
  Array (
    ["id"]=> "2"
    ["desc"]=> "desc 2"
    ["type"]=> "P"
    ["date"]=> "05-JAN-12"
  )
  [2]=>
  Array (
    ["id"]=> "3"
    ["desc"]=> "desc 4"
    ["type"]=> "P"
    ["date"]=> "06-JAN-12"
  )
 )

感谢您的选择。

2
这个任务并不太难。你试过什么了吗? - Aurelio De Rosa
你想如何处理重复项?选择第一个?平均值?求和?计数? - J0HN
2
如果有重复的元素,你会选择哪个元素?第一个。 - Haim Evgi
2个回答

6
$result = array();
foreach($array as $arr){
   if(!isset($result[$arr["id"]])){
      $result[$arr["id"]] = $arr;
   }
}

2
看起来,id 是你的主键。所以循环遍历数组,并仅在id尚不存在时将元素插入到新数组中。
$new_array = array();
foreach ($old_array as $entry) {
    if (empty($new_array[$entry['id']])) $new_array[$entry['id']] = $entry;
}
$new_array = array_values($new_array);

顺便说一下,最后一行仅用于重新排列您在最终数组中的键


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接