【问题标题】:How to check duplicate values in multidimensional associative array?如何检查多维关联数组中的重复值?
【发布时间】:2021-09-25 00:59:56
【问题描述】:

我有一个具有多个状态 ID 的关联多维数组:

array:2 [
  0 => array:2 [
    "url" => "http://www.kerluke.net/qui-sint-debitis-quo-et-suscipit-dolores-dolor-quae"
    "us_states_ids" => array:2 [
      0 => "15"
      1 => "16"
    ]
  ]
  1 => array:2 [
    "url" => "http://www.migato.net/qui-sint-debitis-quo-et-suscipit-dolores-dolor-quae"
    "us_states_ids" => array:3 [
      0 => "15"
      1 => "24"
      2 => "28"
    ]
  ]
]

现在我想为 us_states_ids 找到重复的 id,因为您可以看到索引 1 的 id 为 15,与索引 2 相同。我怎样才能做到这一点?

【问题讨论】:

    标签: php arrays laravel multidimensional-array duplicates


    【解决方案1】:

    如果不是第一次迭代,请尝试循环数组并在当前“us_state_ids”上使用 array_intersect 与前一个迭代。

    $duplicates = [];
    for ($i = 1; $i < count($arr); $i++) {
        $prevStateIds = $arr[$i - 1]["us_states_ids"];
        $stateIds = $arr[$i]["us_states_ids"];
        $duplicates = array_merge($dupicates, array_intersect($prevStateIds, $stateIds));
      }
    }
    

    然后$duplicates 将有重复项。以上代码未经测试,仅供参考。

    【讨论】:

      【解决方案2】:

      您可以使用array_intersect() 获取重复项:

      $duplicates = [];
      foreach($arr as $a) {
          foreach($arr as $b) {
              if ($a !== $b) {
                  $duplicates = [ ...$duplicates, ...array_intersect($a["us_states_ids"], $b["us_states_ids"]) ];
              }
          }
      }
      $duplicates = array_unique($duplicates);
      

      【讨论】:

      • 不客气。这两种解决方案或多或少是相同的。使用你更喜欢哪一个:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 2018-04-25
      • 2019-03-05
      • 2016-03-03
      • 1970-01-01
      • 2015-11-09
      相关资源
      最近更新 更多