如何检查多维关联数组中的重复值?
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);
【讨论】:
不客气。这两种解决方案或多或少是相同的。使用你更喜欢哪一个:)以上是关于如何检查多维关联数组中的重复值?的主要内容,如果未能解决你的问题,请参考以下文章