PHP

Как найти всех родителей элемента в иерархическом (древовидном) массиве

Есть массив:
$tree = array(
    '1' => array(
        '1.1' => array(),
        '1.2' => array(),
        '1.3' => array(
            '1.3.1' => array(),
            '1.3.2' => array(
                '1.3.2.1' => array(),
                '1.3.2.2' => array(),
                '1.3.2.3' => array(),
            ),
            '1.3.3' => array(),
        ),
    ),
    '2' => array(
        '2.1' => array(),
        '2.2' => array(),
    ),
    // ...
);

Нужно, зная ключ элемента, найти всех его родителей:
function parents($tree, $search_key, &$parents)
{
    foreach ($tree as $key => $item)
    {
        if ($key == $search_key)
        {
            return true;
        }
        else if ($item && parents($item, $search_key, $parents))
        {
            $parents[] = $key;
            return true;
        }
    }
 
    return false;
}

Использование:
parents($tree, '1.3.2.2', $parents);
print_r($parents);
Результат:

Array
(
    [0] => 1.3.2
    [1] => 1.3
    [2] => 1
)
Теги:
деревья
Добавлено: 29 Июля 2018 22:32:15 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...