Urichalex
@Urichalex
Кратко о себе)

Как в PHP получить одномерный массив из многомерного сохраняя индексы?

Есть массив вида:
$array = [
    'zzzzzz' => 'xxxxxxx',
    'aaaaaa' => [
        'sssssss' => [
            'dddddd' => 'fffffff',
            'ggggggg' => [
                'uuuuuuu' => 'hhhhhhhhh'
            ],
            'rrrrrrrr' => 'tttttttt'
        ],
        'qqqqq' => 'aaaaa'
    ],
    'wwwww' => 'ssssss'
];

Нужно привести его к следующему виду:
$out = [
    'zzzzzz' => 'xxxxxxx',
    'aaaaaa__sssssss__dddddd' => 'fffffff',
    'aaaaaa__sssssss__ggggggg__uuuuuuu' => 'hhhhhhhhh',
    'aaaaaa__sssssss__rrrrrrrr' => 'tttttttt',
    'aaaaaa__qqqqqr' => 'aaaaa',
    'wwwww' => 'ssssss',
];
Подскажите, как это можно сделать?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
0xD34F
@0xD34F
function plainArray($arr, $keys = []) {
  $result = [];

  foreach ($arr as $k => $v) {
    $keys[] = $k;

    $result += is_array($v)
      ? plainArray($v, $keys)
      : [ implode('__', $keys) => $v ];

    array_pop($keys);
  }

  return $result;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы