1. Вы забыли при отборе элементов поставить фильтр на нужные разделы, поэтому берутся все и из других тоже, т.е. лишние (добавив фильтр вы избежите делать отдельные проверки)
$arFilter = array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE_DATE" => "Y", "ACTIVE" => "Y", "SECTION_ID" => $idSections, "INCLUDE_SUBSECTIONS" => "Y",);
2. формируйте нужный массив на уровне foreach ($arResult["ITEMS"] as $key => $arItem) , тогда вы избежите 3 вложенных циклов(3 вложенных цикла очень сильно нагружают, старайтесь такие конструкции избегать)