我有如下所示的数组,你可以看到 71 和 33 是重复值,所以我需要找到那些有重复值的数组
Array
(
[0] => Array
(
[0] => 71
[1] => 33
[2] => 46
)
[1] => Array
(
[0] => 71
)
[4] => Array
(
[0] => 71
[1] => 33
)
)
预期输出:我想要类似下面的数组
Array
(
[71] => Array
(
[0] => 0
[1] => 1
[2] => 4
)
[33] => Array
(
[0] => 0
[1] => 4
)
)
答案 0 :(得分:3)
您可以遍历主数组和值以存储索引新数组。最后,您可以使用array_filter()
来减少它以仅保留重复项:
$array = array(
0 => array(
0 => 71,
1 => 33,
2 => 46
),
1 => array(
0 => 71
),
4 => array(
0 => 71,
1 => 33
)
);
// loop over the main array:
foreach ($array as $index => $arr_values) {
// loop over values:
foreach ($arr_values as $value) {
$out[$value][] = $index;
}
}
// finally, remove entries with only one values:
$out = array_filter($out, function($values) { return count($values) > 1 ; });
print_r($out);
输出:
Array
(
[71] => Array
(
[0] => 0
[1] => 1
[2] => 4
)
[33] => Array
(
[0] => 0
[1] => 4
)
)