@anton99zel
29а класс средней школы №7

Как объединить элементы?

Имеется примерно такой код:
while($ob = $res->GetNextElement()){ 
$arFields = $ob->GetFields();  
$arProps = $ob->GetProperties();
$rest = CIBlockElement::GetByID($arProps[COLOR][VALUE]);
if ($ar_res = $rest->GetNext()) $imgmic = CFile::GetPath($ar_res[PREVIEW_PICTURE]);
$filed = CFile::ResizeImageGet($arFields[PREVIEW_PICTURE], array('width'=>322, 'height'=>120), BX_RESIZE_IMAGE_PROPORTIONAL_ALT, true, Array("name" => "sharpen", "precision" => 0), false, 95);
{?>
<div class="itemsnew-list-item-wrapper">
<div class="images_box">
<img class="itemsnew-list-item-image" src="<?=$filed[src]?>">
<?=$arFields[NAME]?>
</div>
</div>
<?};
}

Получаю html:
<div class="itemsnew-list-item-wrapper">
<div class="images_box">
<img class="itemsnew-list-item-image" src="/img1.jpg"> //картинки разные всегда
Москва // название
</div>
</div>

<div class="itemsnew-list-item-wrapper">
<div class="images_box">
<img class="itemsnew-list-item-image" src="/img2.jpg"> //картинки разные всегда
Москва // ДУБЛЬ название
</div>
</div>

<div class="itemsnew-list-item-wrapper">
<div class="images_box">
<img class="itemsnew-list-item-image" src="/img3.jpg"> //картинки разные всегда
Питер // название
</div>
</div>

Как сделать - если название повторяются, то html структура должна быть такой:
<div class="itemsnew-list-item-wrapper">
<div class="images_box">
<img class="itemsnew-list-item-image" src="/img1.jpg"> //картинки разные всегда
<img class="NOSHOW" src="/img2.jpg"> //картинки разные всегда + СТИЛЬ
Москва // название УНИКАЛЬНО
</div>
</div>

<div class="itemsnew-list-item-wrapper">
<div class="images_box">
<img class="itemsnew-list-item-image" src="/img3.jpg"> //картинки разные всегда
Питер // название УНИКАЛЬНО
</div>
</div>
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
abyrvalg
@abyrvalg
Разбейте на две части: группировка и вывод:

$cities = [];
while ($ob = $res->GetNextElement()) { 
    $cityName = ...;
    $image = ...;
    $cities[$city][] = $image;
}

foreach ($cities as $cityName => $images) {
    ...
    foreach ($images as $image) {
            ...
    }
    ...
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@vardoLP
Ват ю сэй эбаут май мама?!
ну хотя бы проверять, совпадают названия или нет. иф название равно название эхо то-то элс то-то )))
Ответ написан
@anton99zel Автор вопроса
29а класс средней школы №7
Сделал как то так:
$massiv .= $arFields[NAME].' ';
$unikcnt = mb_substr_count($massiv, $arFields[NAME]); // Функция подсчета
<? if ($unikcnt > 1) echo 'дубль';?>
Ответ написан
Комментировать
Avenax
@Avenax
php dev webcom group
$arr = ['Москва', 'Москва', 'Питер'];
$newArr = [];
foreach ($arr as $value) {
    if (!isset($newArr[$value])) {
        $newArr[$value] = $value;
    }
}
echo '<pre>';
print_r($newArr);
echo '</pre>';
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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