如何检查多维关联数组中的重复值?
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);
我有一个具有多个状态 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);