Парсинг вложенного списка 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


Ответы (0 шт):