let idx = prices.keys();
// затем надо вставить в этот массив элементы, кратные 100
// и отсортировать в обратном порядке , поскольку нужна равная или меньшая цена
// ...
// для цены 5.23 заведомо существующие границы - это 500 и 600
let possibleKeys = idx.slice( idx.indexOf(600), idx.indexOf(500) );
// первое из значений, которое существует как ключ в prices, и есть искомое
конкретный пример, когда случаются такие тупики?
git add ... && git commit -m "..." && git push
git pull
прямые запросы к базе данных в битриксе делать нельзя!
UPDATE `b_iblock_element`
SET `DETAIL_TEXT`=REPLACE(`DETAIL_TEXT`, 'что-то', 'что-то новое')
WHERE `IBLOCK_ID`=36
$GLOBALS['ITEM_FILTER'] = ['ID'=>[/*тут ваш список ID*/],];
для случая "два элемента" будет:
5*(4+6)+4*6 = 74 сочетания
для случая "3 элемента" будет:
5*4*6 = 120 сочетаний.
P.S. на всякий случай проверил определение сочетания - порядок элементов неважен. То есть [1, 'A'] эквивалентно ['A', 1]