Advertisement
Guest User

Перелинковка внутренних массивов

a guest
Feb 13th, 2018
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.86 KB | None | 0 0
  1. $innerParts=Array(); // главный массив, запчасти по наличию
  2. $outherParts=Array(); // главный массив, запчасти на заказ
  3. $generalList=Array(); // массив для линковки внутренних ассоциативных массивов
  4. $listIndexer=0; // порядок обработки внутренних массивов; здесь и проблема, я не знаю как изменить числовой порядок обработки согласно логике
  5. foreach ($arResult['PARTS'] as $NumKey=>$arPart) // такое обращение к массиву изначально
  6. {
  7.     if ($arPart['BRAND']=='')
  8.     /*баг от разработчика: приходят пустые элементы, они то есть, но до попадания в базу вся пустота отсеивается,
  9.     опять же собственными костылиями, а этот косяк всё равно вылазит*/
  10.         continue;
  11.     else;
  12.     if (!$arPart["PRICES_COUNT"]>0) // а это уже правильно, и так есть в цикле вывода (цен нет, но отображать позиции нужно)
  13.     {
  14.         array_push($outherParts,$arPart); // добавление в главный массив "заказных" позиций
  15.         continue;
  16.     } else;
  17.     $tmp_link=$arResult['PRICES'][$arPart['PKEY']];
  18.         // такое обращение к [U]внутреннему[/U] массиву изначально, сохраняется в отдельную ссылку для дополнительных махинаций
  19.     switch ($arResult['SORT'])
  20.     { // здесь выполняется перекрывающая сортировка, базовая работает неправильно (не по числам, а по строкам); где она находится - я не нашёл
  21.         case 3:
  22.             $tmp_link=OverlapSort($tmp_link,'PRICE_FORMATED','DAY','AVAILABLE');
  23.             break;
  24.         case 4:
  25.             $tmp_link=OverlapSort($tmp_link,'DAY','PRICE_FORMATED','AVAILABLE');
  26.             break;
  27.     }
  28.     $flag=false; // флаг для распределения элементов внешнего массива согласно их наличию во внутренних массивах
  29.     $innerList=Array(); // прайс-лист конкретной позиции, среди которых есть товары в наличии
  30.     $outherList=Array(); // прайс-лист конкретной позиции, среди которых нет товаров в наличии
  31.     foreach ($tmp_link as $arPrice)
  32.         if ($arPrice['CODE']=='innerprice') // код прайса из базы данных
  33.         {
  34.             array_push($innerList,$arPrice); // размещение товара во внутреннем прайсе
  35.             $flag=true; // запоминаем наличие для операций за циклом
  36.         } else
  37.             array_push($outherList,$arPrice); // размещение товара во внешнем прайсе
  38.     $generalList[$listIndexer]=array_merge($innerList,$outherList); // объединение массивов, размещение в общем массиве
  39.     // здесь и начинается моя проблема с ассоциативными массивами:
  40.     // $arResult['PRICES'][$arPart['PKEY']]=array_merge($innerList,$outherList);
  41.     // ТАКАЯ ЗАПИСЬ НИЧЕГО НЕ ДАЁТ, В ИТОГЕ НА САЙТЕ НИЧЕГО НЕ ОТОБРАЖАЕТСЯ
  42.     $listIndexer++; // я не могу придумать, как правильно изменять числовой порядок обработки
  43.     if ($flag) // если во внутреннем цикле было отмечено наличие
  44.         array_push($innerParts,$arPart); // сначала самолёты
  45.     else
  46.         array_push($outherParts,$arPart); // ну а девушки потом
  47. }
  48. $listIndexer=-1; // почему -1 дальше будет видно
  49. $arGeneral=array_merge($innerParts,$outherParts); // аналогично с внутренними массивами
  50. // $arResult['PARTS']=array_merge($innerParts,$outherParts);
  51. // НЕ КАТИРУЕТСЯ - ПОЛУЧАЕМ ПУСТОТУ
  52. . . . // здесь что то ещё творится в качестве разметки страницы
  53. foreach($arGeneral as $arPart) работа с внешним массивом
  54. {
  55.     [COLOR="gray"]. . . // опять разметка, и куча кода, не касающегося проблемы[/COLOR]
  56.     if($arPart["PRICES_COUNT"]>0)
  57.     {
  58.         $listIndexer++;
  59.         foreach ($generalList[$listIndexer] as $arPrice) // работа с внутренними массивами
  60.         {
  61.             . . . // код с повышенным КПД
  62.         }
  63.         . . . // и снова разметка
  64.     }
  65.     . . . // и тут разметка
  66. }
  67. . . . // разметка наше всё
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement