Как я могу получить все значения, которые встречаются в более чем 1 массиве?

Возможно ли в 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.

Любое совпадение в нескольких массивах. Есть намеки / идеи?

0

Решение

Это должно работать для вас:

Сначала вы получаете все уникальные значения из каждого массива с 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
)
1

Другие решения

Вы просите пересечение: http://php.net/manual/en/function.array-intersect.php

В вашем случае вам понадобится логика для пересечения каждой комбинации двух массивов.

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector