Найдите, все ли элементы в одном многомерном массиве существуют в другом (используя многомерный массив как стог сена)
Я пытался использовать некоторую логику, чтобы увидеть, все ли элементы в многомерном массиве (стоге сена) выходят в другой гораздо больший стог сена. Мой первый стог сена в первую очередь исходит из объекта json, а второй - это строка с именем точки, которая также преобразуется в массив. Логика здесь в том, что я могу использовать строку, описывающую то, что я ищу в json, простым способом:
Иголка:
Array
(
[key1] => Array
(
[provider] => Array
(
[id] => 1
)
)
[key2] => Array
(
[consumer] => Array
(
[id] => 5
)
[hostname] => foo
)
)
Если в массиве есть игла, должен быть возвращен верхний ключ. Итак, если мы притворимся, что все значения key-> ниже "key2" существуют в массиве, мы должны вернуть key2. id-провайдера и идентификатор-потребителя не совпадают, и могут быть другие пары "ключ-значение", которые выглядят одинаково, но имеют другой путь. поэтому, если "hostname" существует, но намного глубже в массиве, который не соответствует.
Проблема в том, что все примеры, с которыми я сталкивался, либо имеют:
- Фиксированная глубина массива.
- Имея иглу как нитку.
- Не правда многомерный.
Как это можно сделать? Мне пришло в голову рекурсивный итератор, но я не знал, как его использовать, основываясь на вышеизложенном.
Я также просмотрел различные рекурсивные примеры in_array/is_array/array_map/array_filter, но они немного запутаны, и я не мог решить, стоит ли пытаться создать что-то, что позволило бы сканировать два массива в хорошем смысле.
Мой массив довольно большой и содержит, к сожалению, в основном элементы, которые меня не интересуют. Но если я найду способ, который работает, я уверен, что смогу оптимизировать эту часть.
Спасибо за чтение.