Здравствуйте, стоит задача спарсить данные с удаленного сайта.
Там есть страница с категориями 1ого уроаня, при нажатии на какую-то категрию ты попадаешь на страницу с категориями 2ого уровня и так далее.
по идее вложенность примерно такая
Балкон и сад
Грили
Зонты
Балконные экраны
Зонты от солнца и основания для зонтов
Шатры и тенты
Шатры
Тенты
Кашпо и растения для сада
Растения
Шпаллеры
Ванная
...
я хочу написать функция котороя вернула бы мне массив согласно эти категориям
$result = [
[
'name' => 'Грили',
'link' => 'url/url/url/',
'dirs' => [
[
'name' => 'Грили декоративные',
'link' => 'url/url/url/',
'dirs' => []
],
[
'name' => 'Грили латунные',
'link' => 'url/url/url/',
'dirs' => []
]
]
],
[...]
];
для этого я хочу написать рекурсивую функцию, которая бы обходила каждый найденный адрес и строила массив по примеру выше, но у меня не выходит это сделать, не могли бы вы помочь, возможно накидать ссылок, где понятно объясняют алгоритмы рекурсии, можно даже не на php, а на каком-нибдуь псевдо коде
вот мой код, но не не работает.
$result = [];
$topCats = getItemsCategory($document, $result); // передаю страницу с категориями верхнего уровня
function getItemsCategory(phpQueryObject $document, &$result)
{
$childrens = pq($document)->find('.range-catalog-list__link')->elements;
if ($childrens) { // есть потомки
foreach ($childrens as $item) {
$name = trim(pq($item)->find('.range-catalog-list__title')->text());
$link = trim(pq($item)->attr('href'));
if ($doc = phpQuery::newDocumentHTML(getSslPage($link)))
$arReturn[]['dirs'] = getItemsCategory($doc);
return [
'name' => $name,
'link' => $link,
];
}
} else { // нет потомков
return [];
}
}