如何检查多维关联数组中的重复值?

How to check duplicate values in multidimensional associative array?

我有一个具有多个状态 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 相同。我该如何实现?

尝试循环数组并在当前“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 将有重复项。以上代码未经测试,仅供参考

您可以使用 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);