@SergPro

Несколько вызовов getlist или фильтрация массива в php?

На странице нужно вставить в нескольких местах отфильтрованный список элементов инфоблока. Фильтр по свойству инфоблока (список).

Я увидел три варианта реализации:
1) getlist->array()->array_filter->цикл
Одним запросом формируем массив. Затем разбиваем массив на части по фильру. Выводим массив в нужном месте.
2) getlist->array()->цикл->условие
Одним запросом формируем массив. Выводим массив в нужном месте, фильтруем через условие внутри цикла.
3) getlist(filter)->вывод
Делаем несколько getlist запросов с фильтрацией и сразу выводим.

Как правильнее поступить и почему? Я плохо разбираюсь в производительности, но мне кажется несколько getlist запросов хуже чем один, с последующей фильтрацией. Всего нужно сделать 5 фильтров по 35 записям. Буду благодарен, если поделитесь ссылкой, где почитать о производительности (например, что изменится если потребуется сделать 30 фильтров, или записей будет более 1000).

В общем вопрос такой: как в битриксе грамотно реализовать несколько фильтраций с последующим выводом?
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 2
serginhold
@serginhold
если данных очень мало и если особенно они все выводятся, то первый или второй вариант, какой их них без разницы, все равно один getList, потом просто крутишь массив

если данных много, допустим 1000, и надо вывести 3 блока по 5 записей с разным фильтром, то

или три getList,

или один getList с фильтром OR, если конечно это древнее api сожрет тройной фильтр, но вроде там строго два варианта закостылено
https://dev.1c-bitrix.ru/api_help/iblock/classes/c... Фильтр со сложной логикой
Ответ написан
Комментировать
Как правильнее поступить и почему?
Правильнее - реализовать все три варианта и у каждого замерить производительность. Таким образом вы не только выберете самый оптимальный вариант, но ещё и приобретёте навык и сможете сами отвечать на такие вопросы на Тостере.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы