Парсинг вложенного списка ul li с помощью phpQuery
Структура групп представлена списком:
<ul>
<li><span>Родительная группа 1</span>
<ul>
<li><span>Подгруппа 1</span>
<ul>
<li><a href="">Подподгруппа 1</a></li>
<li><a href="">Подподгруппа 2</a></li>
</ul>
</li>
</ul>
</li>
<li><span>Родительная группа 2</span>
<ul>
<li><span>Подгруппа 2</span>
<ul>
<li><a href="">Подподгруппа 3</a></li>
<li><a href="">Подподгруппа 4</a></li>
</ul>
</li>
<li><span>Подгруппа 3</span>
<ul>
<li><a href="">Подподгруппа 5</a></li>
<li><a href="">Подподгруппа 6</a></li>
</ul>
</li>
</ul>
</li>
</ul>
C помощью phpQuery выполняю:
$entry = $doc->find('ul li span');
Получается полная выборка всех групп.
$entry = $doc->find('ul li ul li span');
Получается полная выборка всех подгрупп.
$entry = $doc->find('ul li ul li a');
Получается полная выборка всех под подгрупп.
Мне нужно перенести иерархию списка в массив, как определить родительную группу для выбранного элемента?
На выходе должно быть 3 массива: с группами, подгруппами и подподгруппами: Группы:
Array
(
[0] => Array
(
[name] => Родительная группа 1
[parent] => 0
)
[1] => Array
(
[name] => Родительная группа 2
[parent] => 0
)
)
Подгруппы:
Array
(
[0] => Array
(
[name] => Подгруппа 1
[parent] => Родительная группа 1
)
[1] => Array
(
[name] => Подгруппа 2
[parent] => Родительная группа 2
)
[2] => Array
(
[name] => Подгруппа 3
[parent] => Родительная группа 2
)
)
Подподгруппы:
Array
(
[0] => Array
(
[name] => Подподгруппа 1
[parent] => Подгруппа 1
)
[1] => Array
(
[name] => Подподгруппа 2
[parent] => Подгруппа 1
)
[2] => Array
(
[name] => Подподгруппа 3
[parent] => Подгруппа 2
)
[3] => Array
(
[name] => Подподгруппа 4
[parent] => Подгруппа 2
)
[4] => Array
(
[name] => Подподгруппа 5
[parent] => Подгруппа 3
)
[5] => Array
(
[name] => Подподгруппа 6
[parent] => Подгруппа 3
)
)
Решение вопрос без использования phpQuery: https://stackoverflow.com/questions/36437587/convert-nested-ulli-to-php-nested-array