Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $innerParts=Array(); // главный массив, запчасти по наличию
- $outherParts=Array(); // главный массив, запчасти на заказ
- $generalList=Array(); // массив для линковки внутренних ассоциативных массивов
- $listIndexer=0; // порядок обработки внутренних массивов; здесь и проблема, я не знаю как изменить числовой порядок обработки согласно логике
- foreach ($arResult['PARTS'] as $NumKey=>$arPart) // такое обращение к массиву изначально
- {
- if ($arPart['BRAND']=='')
- /*баг от разработчика: приходят пустые элементы, они то есть, но до попадания в базу вся пустота отсеивается,
- опять же собственными костылиями, а этот косяк всё равно вылазит*/
- continue;
- else;
- if (!$arPart["PRICES_COUNT"]>0) // а это уже правильно, и так есть в цикле вывода (цен нет, но отображать позиции нужно)
- {
- array_push($outherParts,$arPart); // добавление в главный массив "заказных" позиций
- continue;
- } else;
- $tmp_link=$arResult['PRICES'][$arPart['PKEY']];
- // такое обращение к [U]внутреннему[/U] массиву изначально, сохраняется в отдельную ссылку для дополнительных махинаций
- switch ($arResult['SORT'])
- { // здесь выполняется перекрывающая сортировка, базовая работает неправильно (не по числам, а по строкам); где она находится - я не нашёл
- case 3:
- $tmp_link=OverlapSort($tmp_link,'PRICE_FORMATED','DAY','AVAILABLE');
- break;
- case 4:
- $tmp_link=OverlapSort($tmp_link,'DAY','PRICE_FORMATED','AVAILABLE');
- break;
- }
- $flag=false; // флаг для распределения элементов внешнего массива согласно их наличию во внутренних массивах
- $innerList=Array(); // прайс-лист конкретной позиции, среди которых есть товары в наличии
- $outherList=Array(); // прайс-лист конкретной позиции, среди которых нет товаров в наличии
- foreach ($tmp_link as $arPrice)
- if ($arPrice['CODE']=='innerprice') // код прайса из базы данных
- {
- array_push($innerList,$arPrice); // размещение товара во внутреннем прайсе
- $flag=true; // запоминаем наличие для операций за циклом
- } else
- array_push($outherList,$arPrice); // размещение товара во внешнем прайсе
- $generalList[$listIndexer]=array_merge($innerList,$outherList); // объединение массивов, размещение в общем массиве
- // здесь и начинается моя проблема с ассоциативными массивами:
- // $arResult['PRICES'][$arPart['PKEY']]=array_merge($innerList,$outherList);
- // ТАКАЯ ЗАПИСЬ НИЧЕГО НЕ ДАЁТ, В ИТОГЕ НА САЙТЕ НИЧЕГО НЕ ОТОБРАЖАЕТСЯ
- $listIndexer++; // я не могу придумать, как правильно изменять числовой порядок обработки
- if ($flag) // если во внутреннем цикле было отмечено наличие
- array_push($innerParts,$arPart); // сначала самолёты
- else
- array_push($outherParts,$arPart); // ну а девушки потом
- }
- $listIndexer=-1; // почему -1 дальше будет видно
- $arGeneral=array_merge($innerParts,$outherParts); // аналогично с внутренними массивами
- // $arResult['PARTS']=array_merge($innerParts,$outherParts);
- // НЕ КАТИРУЕТСЯ - ПОЛУЧАЕМ ПУСТОТУ
- . . . // здесь что то ещё творится в качестве разметки страницы
- foreach($arGeneral as $arPart) работа с внешним массивом
- {
- [COLOR="gray"]. . . // опять разметка, и куча кода, не касающегося проблемы[/COLOR]
- if($arPart["PRICES_COUNT"]>0)
- {
- $listIndexer++;
- foreach ($generalList[$listIndexer] as $arPrice) // работа с внутренними массивами
- {
- . . . // код с повышенным КПД
- }
- . . . // и снова разметка
- }
- . . . // и тут разметка
- }
- . . . // разметка наше всё
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement