Алгебраическое пересечение массивов

Вечно вы мне умные мысли подсказываете, может и сейчас так случиться.
Есть у меня вот такой ассоциативный массив
array (size=4)
  'width' => 
    array (size=2)
      0 => string '4' (length=1)
      1 => string '3' (length=1)
  'height' => 
    array (size=3)
      0 => string '5' (length=1)
      1 => string '4' (length=1)
      2 => string '3' (length=1)
  'presure' => 
    array (size=3)
      0 => string '5' (length=1)
      1 => string '4' (length=1)
      2 => string '3' (length=1)
  'nice' => 
    array (size=2)
      0 => string '5' (length=1)
      1 => string '3' (length=1)
Количество записей в этом массиве (ключей — width,height и так далее) так и количество данных может быть любым.
Мне для решения задачи нужно найти так называемое алгебраическое пересечение — то есть массив, в котором будут только те данные, которые есть в каждом из перечисленных выше. Конкретно для этого примера — я должен получить число 3 (ну в данном случае строку но не важно)
В php есть функция как раз подходящая
array_intersect()
www.php.net/manual/ru/function.array-intersect.php
и она шикарно работает, но вызвать ее нужно, перечисли все массивы
тоесть вот так
var_dump(array_intersect($res['width'],$res['height'],$res['presure'],$res['nice']));
и да, на выходе — 3. Но это я сделал вручную, зная наперед какие будут ключи и сколько их будет.
Но я что-то ума не могу приложить, как воспользоваться такой подходящей функцией в реальных условиях — когда не известно заранее количество записей в массиве. Цикл для этого не подходит, ведь функция требует передать ей сразу полный комплект массивов для работы.
Есть идеи?
Александр Мельник
12 мая 2020, 00:24
modx.pro
446
0

Комментарии: 2

Артем
12 мая 2020, 00:32
+2
return array_intersect(...array_values($res));
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2