«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2017/10/29 21:08:52  №1083950 1
Пытаюсь решить задачку на рекурсию от ОПа, которую он в прошлом треде постил:
>1) Дан список категорий товаров в виде такого массива:

>$categories = [
>// id, название, parentId, кол-во товаров
>[1, 'Бытовая техника', null, 0],
>[2, 'Телевизоры', 1, 0],
>[3, 'LCD-телевизоры', 2, 20],
>[4, 'Телевизоры с газоразрядным дисплеем', 16],
>[5, 'Стиральные машины', 1, 0],
>[6, 'Холодильники', 1, 0],
>...
>];

>Для каждого товара указан уникальный id категории, >название, id родительской категории или null, если ее >нет, количество товаров в этой категории без учета >категорий-детей. Используя эти данные:

>а) Напиши функцию, которая для любого переданной >id категории вернет массив, содержащий id этой >категории и всех ее предков, начиная от корня >дерева.

>Например, для категории 3 вернет массив [1, 2, 3] >(Бытовая техника -> Телевизоры -> LCD-телевизоры). А >для 1 - массив [1].

>б) Напиши функцию, которая для любой категории >вернет массив id ее потомков. Например для id = 2 >функция должна вернуть массив [3, 4]

>в) Напиши функцию, которая вернет массив >категорий-сестер (то есть категорий, имеющих того >же родителя). Для id = 2 функция должна вернуть >массив [5, 6]

>г) Напиши функцию, которая выведет список >категорий в виде дерева "лесенкой", с указанием >числа товаров с учетом дочерних категорий:

>Бытовая техника (36)
>- Телевизоры (36)
>-- LCD-телевизоры (20)
>-- Телевизоры с газоразрядным дисплеем (16)
>Стиральные машины
>Холодильники
Что-то у меня совсем не получается. М. б. кто-нибудь намекнет как такое решать.