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

Posted

技术标签:

【中文标题】如何检查多维关联数组中的重复值?【英文标题】: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 相同。我怎样才能做到这一点?

【问题讨论】:

【参考方案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);

【讨论】:

不客气。这两种解决方案或多或少是相同的。使用你更喜欢哪一个:)

以上是关于如何检查多维关联数组中的重复值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHP 中的多维关联数组中删除项目

C# 中的多维关联数组

关联数组与多维数组,VBA

php 数组索引值如何重新从0开始递增

如何循环访问和访问多维和关联数组中的各种元素? PHP,JSON 或 XML

PHP 数组中的每个ID键关联一个值,可不可以关联两个值?