Алгебраическое пересечение массивов
Вечно вы мне умные мысли подсказываете, может и сейчас так случиться.
Есть у меня вот такой ассоциативный массив
Мне для решения задачи нужно найти так называемое алгебраическое пересечение — то есть массив, в котором будут только те данные, которые есть в каждом из перечисленных выше. Конкретно для этого примера — я должен получить число 3 (ну в данном случае строку но не важно)
В php есть функция как раз подходящая
array_intersect()
www.php.net/manual/ru/function.array-intersect.php
и она шикарно работает, но вызвать ее нужно, перечисли все массивы
тоесть вот так
Но я что-то ума не могу приложить, как воспользоваться такой подходящей функцией в реальных условиях — когда не известно заранее количество записей в массиве. Цикл для этого не подходит, ведь функция требует передать ей сразу полный комплект массивов для работы.
Есть идеи?
Есть у меня вот такой ассоциативный массив
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. Но это я сделал вручную, зная наперед какие будут ключи и сколько их будет.Но я что-то ума не могу приложить, как воспользоваться такой подходящей функцией в реальных условиях — когда не известно заранее количество записей в массиве. Цикл для этого не подходит, ведь функция требует передать ей сразу полный комплект массивов для работы.
Есть идеи?
Комментарии: 2
return array_intersect(...array_values($res));
вот спасибо огромное
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.