Помогите решить проблему:
Делаю выборку из иблока, получаю товары, нужно построить дерево категорий для этих товаров.
Сначала получаю массив с категориями третьего уровня, в которых лежат товары и удаляю дубли:
Код |
---|
while($arSections=$dbItems->GetNext()):
$arISection[]=$arSections['IBLOCK_SECTION_ID'];
endwhile;
$arISection=array_unique($arISection);
|
Потом получаю все остальные категории (второй и первый уровень:
Код |
---|
foreach($arISection as $id):
$Res3=CIBlockSection::GetByID($id);
$arRes3=$Res3->GetNext();
$arSection3=Array("ID"=>$arRes3['ID'],"NAME"=>$arRes3['NAME']);
$Res2=CIBlockSection::GetByID($arRes3['IBLOCK_SECTION_ID']);
$arRes2=$Res2->GetNext();
$arSection2=Array("ID"=>$arRes2['ID'],"NAME"=>$arRes2['NAME']);
$arSection2['PARENT'][]=$arSection3;
$Res1=CIBlockSection::GetByID($arRes2['IBLOCK_SECTION_ID']);
$arRes1=$Res1->GetNext();
$arSection1=Array("ID"=>$arRes1['ID'],"NAME"=>$arRes1['NAME'],"PARENT"=>$arSection2);
$arNavSection[]=$arSection1;
endforeach; |
И в $arNavSection я уже получаю что-то вроде:
Код |
---|
Array
(
[0] => Array
(
[ID] => 2051
[NAME] => Уют
[PARENT] => Array
(
[ID] => 2052
[NAME] => Аксессуары для ванной и туалета
[PARENT] => Array
(
[0] => Array
(
[ID] => 2053
[NAME] => Банки для ваты
)
)
)
)
[1] => Array
(
[ID] => 1878
[NAME] => Красота и здоровье
[PARENT] => Array
(
[ID] => 1917
[NAME] => Средства личной гигиены
[PARENT] => Array
(
[0] => Array
(
[ID] => 1918
[NAME] => Вата, ватные диски
)
)
)
)
[2] => Array
(
[ID] => 1815
[NAME] => Дом
[PARENT] => Array
(
[ID] => 1843
[NAME] => Для хранения и подачи пищи
[PARENT] => Array
(
[0] => Array
(
[ID] => 1846
[NAME] => Наборы для специй
)
)
)
)
[3] => Array
(
[ID] => 1815
[NAME] => Дом
[PARENT] => Array
(
[ID] => 1843
[NAME] => Для хранения и подачи пищи
[PARENT] => Array
(
[0] => Array
(
[ID] => 1844
[NAME] => Банки для сыпучих продуктов
)
)
)
)
)
|
Все вроде как хорошо, но последние 2 элемента массива имеют одинаковую категорию второго уровня и хотелось бы их объединить, что бы массив имел вид:
Код |
---|
Array
(
[0] => Array
(
[ID] => 2051
[NAME] => Уют
[PARENT] => Array
(
[ID] => 2052
[NAME] => Аксессуары для ванной и туалета
[PARENT] => Array
(
[0] => Array
(
[ID] => 2053
[NAME] => Банки для ваты
)
)
)
)
[1] => Array
(
[ID] => 1878
[NAME] => Красота и здоровье
[PARENT] => Array
(
[ID] => 1917
[NAME] => Средства личной гигиены
[PARENT] => Array
(
[0] => Array
(
[ID] => 1918
[NAME] => Вата, ватные диски
)
)
)
)
[2] => Array
(
[ID] => 1815
[NAME] => Дом
[PARENT] => Array
(
[ID] => 1843
[NAME] => Для хранения и подачи пищи
[PARENT] => Array
(
[0] => Array
(
[ID] => 1846
[NAME] => Наборы для специй
)
[1] => Array
(
[ID] => 1844
[NAME] => Банки для сыпучих продуктов
)
)
)
)
) |
Как бы сделать такое?