[b]Антон Лобынцев,[/b]
С небольшой поправкой - Вы при выводе резульатов [S]забыли еще один цикл (в массиве $arSectionsIDtoIndex значения тоже массивы)[/S] делаете цикл по всему массиву arSectionsIDtoIndex и получаете в $val массивы, а следует перебирать только $arSectionsIDtoIndex[$arItem["ID]].
[CODE]
$arID = array();
foreach($arResult["SEARCH"] as $i => $arItem)
{
if($arItem["MODULE_ID"] == "iblock" && substr($arItem["ITEM_ID"], 0, 1) !== "S")
$arID[$arItem["ITEM_ID"]] = $i;
}
$grab = CIBlockElement::GetList(array(), array(
"ID" => array_keys($arID)
), false, false, array(
"ID",
"IBLOCK_ID",
"PREVIEW_PICTURE",
"IBLOCK_SECTION_ID"
));
while ($ar = $grab->Fetch())
{
$arResult["SEARCH"][$arID[$ar["ID"]]]["PICTURE"] = CFile::GetFileArray($ar["PREVIEW_PICTURE"]);
# собираем ID-ки секций элементов
if (intval($ar["IBLOCK_SECTION_ID"]) > 0)
$arSectionsIDtoIndex[intval($ar["IBLOCK_SECTION_ID"])][] = $arID[$ar["ID"]];
}
# если собрали какие-то секции, то получим их
if (sizeof($arSectionsIDtoIndex) > 0)
{
$dbSections = CIBlockSection::GetList(array(), array(
"ID" => array_keys($arSectionsIDtoIndex)
));
while ($arItem = $dbSections->GetNext())
{
# раскидаем секции по массиву результата
foreach ($arSectionsIDtoIndex[$arItem["ID"]] as $key => $val)
{
// echo $pr_val." ".$arResult["SEARCH"][$pr_val]["NAME"]."<br>";
if (isset($arResult["SEARCH"][$val]) )
{
$arResult["SEARCH"][$val]["SECTION_PICTURE"] = CFile::GetFileArray($arItem["PICTURE"]);
$arResult["SEARCH"][$val]["SECTION_DESCRIPTION"] = $arItem["DESCRIPTION"];
}
}
}
}
[/CODE]
С небольшой поправкой - Вы при выводе резульатов [S]забыли еще один цикл (в массиве $arSectionsIDtoIndex значения тоже массивы)[/S] делаете цикл по всему массиву arSectionsIDtoIndex и получаете в $val массивы, а следует перебирать только $arSectionsIDtoIndex[$arItem["ID]].
[CODE]
$arID = array();
foreach($arResult["SEARCH"] as $i => $arItem)
{
if($arItem["MODULE_ID"] == "iblock" && substr($arItem["ITEM_ID"], 0, 1) !== "S")
$arID[$arItem["ITEM_ID"]] = $i;
}
$grab = CIBlockElement::GetList(array(), array(
"ID" => array_keys($arID)
), false, false, array(
"ID",
"IBLOCK_ID",
"PREVIEW_PICTURE",
"IBLOCK_SECTION_ID"
));
while ($ar = $grab->Fetch())
{
$arResult["SEARCH"][$arID[$ar["ID"]]]["PICTURE"] = CFile::GetFileArray($ar["PREVIEW_PICTURE"]);
# собираем ID-ки секций элементов
if (intval($ar["IBLOCK_SECTION_ID"]) > 0)
$arSectionsIDtoIndex[intval($ar["IBLOCK_SECTION_ID"])][] = $arID[$ar["ID"]];
}
# если собрали какие-то секции, то получим их
if (sizeof($arSectionsIDtoIndex) > 0)
{
$dbSections = CIBlockSection::GetList(array(), array(
"ID" => array_keys($arSectionsIDtoIndex)
));
while ($arItem = $dbSections->GetNext())
{
# раскидаем секции по массиву результата
foreach ($arSectionsIDtoIndex[$arItem["ID"]] as $key => $val)
{
// echo $pr_val." ".$arResult["SEARCH"][$pr_val]["NAME"]."<br>";
if (isset($arResult["SEARCH"][$val]) )
{
$arResult["SEARCH"][$val]["SECTION_PICTURE"] = CFile::GetFileArray($arItem["PICTURE"]);
$arResult["SEARCH"][$val]["SECTION_DESCRIPTION"] = $arItem["DESCRIPTION"];
}
}
}
}
[/CODE]