Формирование древовидной структуры из HTML-элементов в массиве [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Формирование древовидной структуры из HTML-элементов в массиве [закрыто]

Сообщение Anonymous »

Я вижу здесь реализацию через рекурсивную функцию, но...
Я десятки раз пытался составить эту функцию, но не могу уловить логику по которому это должно работать, хотя на первый взгляд это не должно быть так уж сложно. Я вроде понимаю точки, в которых должен происходить выход из рекурсивной функции, но мне это ничего не дает.
Хотелось бы понять алгоритм, как он должен работать, в любом случае языке, возможно, хотя бы на словах, потому что пока я не могу "текстом" даже мысленно сформулировать, как должно выглядеть решение.
Я хочу реализовать функцию для генерации результирующий массив в нужном мне формате.
Я подготовил данные, ввод и вывод, чтобы вам было понятнее, чего я хочу добиться.
ВВОД
$input = ['h1', 'p', 'h2', 'p', 'p', 'h3', 'p', 'h2', 'p', 'h3', 'p', 'h1', 'p', 'h2', 'p', 'h3', 'p'];
ВЫВОД
$output = [
[
'title' => 'h1',
'descriptions' => ['p'],
'childrens' => [
[
'title' => 'h2',
'descriptions' => ['p', 'p'],
'childrens' => [
[
'title' => 'h3',
'descriptions' => ['p'],
],
]
],
[
'title' => 'h2',
'descriptions' => ['p'],
'childrens' => [
[
'title' => 'h3',
'descriptions' => ['p']
]
]
]
]
],
[
'title' => 'h1',
'descriptions' => ['p'],
'childrens' => [
[
'title' => 'h2',
'descriptions' => ['p'],
'childrens' => [
[
'title' => 'h3',
'descriptions' => ['p']
]
]
]
]
]
];

моя (не работающая) реализация:
function parseDOM(array $inputArray): array {
$output = [];
$position = 0;
$domElementsQuantity = count($inputArray);
$parentTagLvl = 0;

function getCurrentTagLvl(string $node): bool|int
{
return match ($node) {
'h1' => 1,
'h2' => 2,
'h3' => 3,
'h4' => 4,
'h5' => 5,
'h6' => 6,
default => false,
};
}

function recursiveCreateTree(array $inputArray, int &$offsetIndex, $parentTagLvl) {
$tree = [];
$arrayItemsQuantity = count($inputArray);

while ($offsetIndex

Подробнее здесь: https://stackoverflow.com/questions/782 ... n-an-array
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Создание древовидной структуры из нескольких вызовов API в JAVA
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Хеширование древовидной структуры
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Список древовидной структуры каталогов в Python?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Показать элементы древовидной структуры, связанные линиями?
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Формирование уникального видеоплеере в Android Mobile [закрыто]
    Anonymous » » в форуме Android
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»