Найти пересекающиеся значения из неизвестного количества массивовPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Найти пересекающиеся значения из неизвестного количества массивов

Сообщение Anonymous »

Мне нужно получить значения, которые есть во всех массивах. Пример:

Код: Выделить всё

$array1 = [1,3,6,7];
$array2 = [63,34,1,2];
$array3 = [1,7,5,2];
$array4 = [];
Ответ — пустой массив [].

Код: Выделить всё

$array1 = [1,3,6,7];
$array2 = [63,34,1,2];
$array3 = [1,7,5,2];
Ответ — [1]

Я могу сделать это с помощью array_intersect() —

Код: Выделить всё

$result = array_intersect($array1, $array2,  $array3);
Но у меня большая проблема — я не знаю, сколько у меня объявленных массивов (min=0, max=7)

Код: Выделить всё

$a = rand(true, false);
$b = rand(true, false);
if ($a) {
$array1 = [1,3,5,7];
}
if ($b) {
$array2 = [];
}
$array3 = [1,8,99];
Если у меня есть $array2 - результатом будет пустой массив []. В противном случае — результат [1]. Поэтому мне нужно использовать только объявленные массивы.

Я могу найти объявленные массивы следующим способом

Код: Выделить всё

$all = [
$array1 ?? null,
$array2 ?? null,
$array3 ?? null,
];

foreach ($all as $key => $item) {
if ($item === null) {
unset($all[$key]);
}
}
Но как мне теперь найти пересекающиеся значения?

Подробнее здесь: https://stackoverflow.com/questions/527 ... -of-arrays
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»