Преобразование и объединение массивов PHP

У меня есть массив:

array (size=3)
  0 => string 'Level' (length=5)
  1 => string 'Sub' (length=3)
  2 => string 'Item' (length=4)

А теперь я хочу преобразовать этот массив в такой:

array (size=1)
  'Level' => 
    array (size=1)
      'Sub' => 
        array (size=1)
          'Item' => 
            array (size=0)
              ...

Затем я хочу «объединить» этот «преобразованный» массив с этим массивом:

array (size=1)
  'Level' => 
    array (size=1)
      'Sub' => 
        array (size=1)
          'AnotherItem' => 
            array (size=0)
              ...

Результат должен выглядеть так:

array (size=1)
  'Level' => 
    array (size=1)
      'Sub' => 
        array (size=2)
          'Item' => 
            array (size=0)
              ...
          'AnotherItem' => 
            array (size=0)
              ...

Я также хочу иметь возможность «объединить» этот результат с другим «преобразованным» массивом. Я более двух часов пытался найти решение самостоятельно, но теперь мой мозг разбился.

Заранее спасибо за помощь!

Что ты пробовал? Разместите свой код.

Difster 04.11.2018 20:26

Практически ничего не пробовал. Я просто не могу представить, как это работает.

fluse1367 04.11.2018 20:28

Что ж, тогда вам нужно прочитать о массивах в PHP и сначала что-нибудь попробовать. Есть масса примеров. Мы здесь, чтобы помочь, но вы должны делать всю работу. Если вы собираетесь работать программистом на каком-либо языке, вам нужно знать, как управлять массивами.

Difster 04.11.2018 20:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы зациклите массив в обратном направлении, вы можете построить массив, сделав новый массив = тем, чем был предыдущий элемент.

Затем для объединения двух массивов используйте array_merge_recursive.

$arr = ['level', 'sub', 'item'];
$arr = array_reverse($arr);
$new =[];

// Rebuild the array
foreach($arr as $key => $item){
    if ($key ==0){
        $new = [$item => []];
    }else{
        $new = [$item => $new];
    }
}

// Your other array:
$other = array (
  'level' => 
  array (
    'sub' => 
    array (
      'AnotherItem' => 
      array (
      ),
    ),
  ),
);

// Merge the two
$new = array_merge_recursive($new, $other);

var_export($new);

Выход:

array (
  'level' => 
  array (
    'sub' => 
    array (
      'item' => 
      array (
      ),
      'AnotherItem' => 
      array (
      ),
    ),
  ),
)

https://3v4l.org/VWBpM

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