@Sacred133

Почему происходит дублирование элементов каталога при сортировке изображений в зависимости от ширины и высоты?

Поясни пожалуйста, почему происходит дублирование элементов списка каталога, при таком вывод списка в попытке отсортировать товары по формату изображений - сначала вертикальные, потом квадратные, горизонтальные, другие не попавшие в условие, без фото?

Пример кода

if (!isset($_GET['byName']) && !isset($_GET['byPrice']))
{

 
    $arVert = array();
    $arSquare = array();
    $arHor = array();
    $arQwadrat = array();
    $arWithPhoto = array();
    $arNoPhoto = array();
    foreach ($arResult['elements'] as $key => $value) 
        $arFile = array();
        if (isset($value["DEPTH_LEVEL"])) {
            if (count($value['UF_CROPED']) > 0) {
                $arFile = CFile::GetFileArray($value['UF_CROPED'][0]);
                $arWithPhoto[$key] = $value;
            } else {
                $arNoPhoto[$key] = $value;
            }
        } else {
            if (!empty($value["DETAIL_PICTURE"])) {
                $arWithPhoto[$key] = $value;
                $arFile = CFile::GetFileArray($value["DETAIL_PICTURE"]);
            } else {
                $arNoPhoto[$key] = $value;
            }
        }
        
        if (!empty($arFile['WIDTH']) && !empty($arFile['HEIGHT']))
        {
            $k = floatval(intval($arFile['WIDTH']) / intval($arFile['HEIGHT']));
             if ($k > 1.2)
            {
                $arHor[$key] = $value;
            }
           
            elseif ($k < 0.8) {
                $arVert[$key] = $value;
           }
            else
             {
                $arSquare[$key] = $value;
             }
        }
    }
    $arResult['elements'] = array_merge($arVert, $arSquare, $arHor, $arWithPhoto, $arNoPhoto);
}
  • Вопрос задан
  • 48 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Зачем вам массив $arWithPhoto? В него дублируется то, что попадает в $arHor, $arVert и $arSquare.
Ответ написан
smilingcheater
@smilingcheater
Потому что вы сначала складываете $value в $arWithPhoto
$arWithPhoto[$key] = $value;
Потом его же в $arHor/$arVert/$arSquare

а ещё вы забыли открывающуюся фигурную скобку после foreach ($arResult['elements'] as $key => $value)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы