Возможно ли в PHP перепроверить все совпадения массивов и сохранить результат в массиве? Я нашел `array_intersect (), но эта функция возвращает только результаты первого массива. И только если значения присутствуют во всех массивах.
Пример ввода:
Array 1 = 1,2,3
Array 2 = 4,5,6
Array 3 = 6,7,8
Array 4 = 3,9,10
Теперь мне нужен массив, который возвращает мне любое совпадение. В этом примере это будет:
result = 3,6
Потому что «3» находится в массиве 1 и массиве 4, а результат «6» находится в массиве 2 и массиве 3.
Любое совпадение в нескольких массивах. Есть намеки / идеи?
Это должно работать для вас:
Сначала вы получаете все уникальные значения из каждого массива с array_unique()
. Затем вы объединяете их в один массив с array_merge()
и посчитать все значения с array_count_values()
.
После этого вы просто фильтруете все значения с помощью array_filter()
, которые находятся не более чем в 1 массиве, и у вас есть ожидаемый результат.
Чтобы перевернуть массив, просто используйте array_keys()
.
<?php
$count = array_count_values(array_merge(array_unique($arr1), array_unique($arr2), array_unique($arr3), array_unique($arr4)));
$result = array_keys(array_filter($count, function($v){
return $v >= 2;
}));
print_r($result);
?>
выход:
Array
(
[0] => 3
[1] => 6
)
Вы просите пересечение: http://php.net/manual/en/function.array-intersect.php
В вашем случае вам понадобится логика для пересечения каждой комбинации двух массивов.