@Kim_Soal

Вложить друг в друга елементы массива?

Есть одномерный массив вида
[0] => dir2
[1] => dir2_1
[2] => dir2_1_1
...

Элемент может быть один, а может много.
Как на выходе получить их вложенными друг в друга таким образом?
array(
  "dir2"=>array(
    "dir2_1"=>array(
      "dir2_1_1"=>array(...)
    )
  )
)
  • Вопрос задан
  • 380 просмотров
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
Можно рекурсией: https://3v4l.org/m5Cup
<?php

$input = ['dir2', 'dir2_1', 'dir2_1_1'];

function convert_array(array $input, array $output = []) {
    if (empty($input)) {
        return $output;
    }
    
    $value = array_pop($input);
    
    return convert_array($input, [$value => $output]);
}

var_dump(convert_array($input));


Можно и без рекурсии: https://3v4l.org/4FuZ4
<?php

$input = ['dir2', 'dir2_1', 'dir2_1_1'];

$output = [];
foreach (array_reverse($input) as $value) {
    $output = [$value => $output];
}

var_dump($output);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы