Документы для веб-разработчиков

<? ///////////////////////////////////////////////////////////////// // Функции для работы с массивами ///////////////////////////////////////////////////////////////// // ------------------------------------------------------------ // Группировка по значению элемента ассоциативного массива (очень круто) // ------------------------------------------------------------ $resultArray = array(); $inputArray = array( array('name' => 'Имя 1', 'group' => 'Значение 3'), array('name' => 'Имя 2', 'group' => 'Значение 1'), array('name' => 'Имя 3', 'group' => 'Значение 2'), array('name' => 'Имя 3', 'group' => 'Значение 3'), ); array_walk($inputArray, function($item, $key) use (&$resultArray) { $resultArray[$item['group']][] = $item; }); echo "<pre>"; print_r($resultArray); echo "</pre>"; // ------------------------------------------------------------ // Группировка для битрикса по разделам (один уровень - раздел, элементы) // ------------------------------------------------------------ $arItems = $arResult["ITEMS"]; // Элементы отсортированы в настройках компонента $arrGroupBySectionID = array(); array_walk($arItems, function($item, $key) use (&$arrGroupBySectionID) { $arrGroupBySectionID[$item['IBLOCK_SECTION_ID']][] = $item; }); // Собираем отсортированные группы (по порядку сортироввки ) $arrSections = array(); $resSec = CIBlockSection::GetList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>$arParams["IBLOCK_ID"]), false, array("IBLOCK_ID","ID", "NAME"), false); $i = 0; while ($ob = $resSec->GetNext()) { $sectionID = $ob["ID"]; $arrSections[$i] = $ob; $arrSections[$i]["ITEMS"] = $arrGroupBySectionID[$sectionID]; $i++; } // Выводим в шаблон: foreach($arrSections as $section): // $section["ID"]; $section["NAME"]; foreach($section["ITEMS"] as $arItem): // $arItem['ID']; $arItem['NAME'] endforeach; endforeach;