首页 > 解决方案 > 删除多维数组中的重复项

问题描述

我有一个包含多个相同数据的数组:

array(2) {
  [0]=>
  array(2) {
    ["id"]=>
    string(11) "43000173601"
    ["data"]=>
    array(2) {
      [0]=>
      array(2) {
        ["id"]=>
        string(5) "52874"
        ["name"]=>
        string(3) "x70"
      }
      [1]=>
      array(2) {
        ["id"]=>
        string(5) "52874"
        ["name"]=>
        string(3) "x70"
      }
    }
  }
  [1]=>
  array(2) {
    ["id"]=>
    string(11) "43000173602"
    ["data"]=>
    array(1) {
      [0]=>
      array(2) {
        ["id"]=>
        string(5) "52874"
        ["name"]=>
        string(3) "x70"
      }
    }
  }
}

我曾尝试使用array_unique()删除这些条目,但收到此错误:

数组到字符串的转换

外部数组包含路线 ID,一些公共汽车可能有 2 条不同的路线,因此在这种情况下,它们可以保留,但是我只想删除 1 条路线中的重复条目:

[0]=>
  array(2) {
    ["id"]=>
    string(11) "43000173601"
    ["data"]=>
    array(2) {
      [0]=>
      array(2) {
        ["id"]=>
        string(5) "52874"
        ["name"]=>
        string(3) "x70"
      }
      [1]=>
      array(2) {
        ["id"]=>
        string(5) "52874"
        ["name"]=>
        string(3) "x70"
      }
    }

标签: phparraysduplicates

解决方案


代码可以是这样的:

$new_array = [];
foreach ($your_array as $item) {
    if (!isset($new_array[$item['id']])) {
        // item id is not in `new_array` - add `item`
        $new_array[$item['id']] = $item;
    } else {
        // item id already presents - add `data` item to it
        $new_array[$item['id']]['data'][] = $item['data'];
    }
}

推荐阅读