Помогите разложить много много мерный массив

QuZ

Постоялец
Регистрация
18 Июл 2009
Сообщения
86
Реакции
50
Добрый вечер всем. Я пытаюсь получить данные, для отправки их POST запросом. У меня имеется JSON, который я перегнал в массив. Данный массив имеет более 10-ти вложений и получился больше, чем на 500 строк. Мне необходимо получить значения элементов массива, зная их ключи из 9-того вложения. Перебирать его весь форичем - это возможно. Но, думаю, что есть куда более элегантный способ.
+ еще что против данного способа перебора - это отсутствие уверенности, что не будет изменена его структура. Какие есть идеи? Массив ассоциативный.

Свернул бы его в одномерный, но ключи у меня к сожалению тогда состыкуются и перезапишутся)). Самым красивым вариантом, наверно, было-бы сделать из данного многомерного, просто, для каждого элемента объединив ключи. Но, как это сделать - пока тоже не представляю, кроме, как перебора.
Т.е.
([key1].[key2].[key3].[key4].[key5].[key6].[key7].[key8].[keyN]) => [value]
Нашел функцию
array_column , но что-то ее даже из мануала не смог запустить)) Видно, уже светает.

Еще есть одна бредовая идея - это сделать array_flip(), дальше сделать поиск нужных элементов и перевернуть его назад.

Код:
Array
(
    [0] => Array
        (
            [model] => environment
            [data] => Array
                (
                    [agent] => Array
                        (
                            [hasAdblock] =>
                            [BrowserEngine] => Gecko
                            [BrowserEngineVersion] => 55.0
                            [BrowserName] => Firefox
                            [BrowserVersion] => 55.0
                            [OSFamily] => Windows
                            [OSName] => Windows 7
                            [OSVersion] => 6.1
                            [isBrowser] => 1
                            [isMobile] =>
                            [x64] => 1
                            [botSocial] =>
                            [isSupported] => 1
                        )

                    [session] => Array
                        (
                            [tld] => sk
                            [nonce] => 07133375504054129
                            [canHaveAuth] =>
                            [public] => Array
                                (
                                    [nai11ExvhSXbx] => /a3rCupHsDfSNsTPU/xfQ/AhyGMZQk20EyCE5PQUPmc=
                                )

                            [locale] => ru
                            [region] => Array
                                (
                                    [id] => 213
                                    [chain] => Array
                                        (
                                            [0] => 213
                                            [1] => 1
                                            [2] => 3
                                            [3] => 225
                                            [4] => 10001
                                            [5] => 10000
                                        )

                                    [country] => Ðîññèÿ
                                    [country_iso] => RU
                                    [country_tld] => ru

Спасибо.
 
Последнее редактирование:
Вопрос же только в глубине ?
Сделай через foreach и рекурсивную функцию, с передачей глубины.
примерно так
PHP:
perebor ($твоймассив;1);

function perebor ($array;$depth) {
    foreach ($array as $arrayelements) {
    
         if ($depth==9) {
                тут что то делаем
            } else {
          if (is_array($arrayelements)) {
             perebor ($array;$depth++);
             }
         }

    }
}
 
можно еще в строке json искать по шаблону через preg_match ))
 
Назад
Сверху