Найдите, все ли элементы в одном многомерном массиве существуют в другом (используя многомерный массив как стог сена)

Я пытался использовать некоторую логику, чтобы увидеть, все ли элементы в многомерном массиве (стоге сена) выходят в другой гораздо больший стог сена. Мой первый стог сена в первую очередь исходит из объекта 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, но они немного запутаны, и я не мог решить, стоит ли пытаться создать что-то, что позволило бы сканировать два массива в хорошем смысле.

Мой массив довольно большой и содержит, к сожалению, в основном элементы, которые меня не интересуют. Но если я найду способ, который работает, я уверен, что смогу оптимизировать эту часть.

Спасибо за чтение.

0 ответов

Другие вопросы по тегам