@by_steris

Как правильно пройтись циклом внутри другого?

<? foreach ($arItem['PROPERTIES']['IMG_BEFORE']['VALUE'] as $key1 => $arImgBeforeSrc): ?>
  <? foreach ($arItem['PROPERTIES']['IMG_AFTER']['VALUE'] as $key2 => $arImgAfterSrc): ?>
    <div class="cocoen">
      <img data-src="" class="blog-list__item-image<?=($arParams['ROUNDED_IMAGE'] ? ' rounded' : '');?>" src="<?=CFile::getPath($arImgBeforeSrc);?>" alt="">
      <img data-src="" class="blog-list__item-image<?=($arParams['ROUNDED_IMAGE'] ? ' rounded' : '');?>" src="<?=CFile::getPath($arImgAfterSrc);?>" alt="">
    </div>
  <?endforeach;?>
<?endforeach;?>


Вопрос думаю достаточно примитивный, но не смог найти ответа, поэтому решил спросить у знатоков PHP.
В битриксе есть два свойтсва типа файл - они множественные (в каждом из свойств лежит 4 изображения).
Что хочу сделать вывести список фото "До" и "После", соответственно есть необходимость пройтись по первому массиву циклом и по второму. Но на выходе получаю не 4 блока с классом cocoen, а гораздо больше.
Как можно вывести правильно ?
  • Вопрос задан
  • 1481 просмотр
Решения вопроса 1
vhood
@vhood
Не забывайте отмечать решения
Одиакового ничего, идея скорее всего выводить по идексу в массиве

Значит нужно по индексу и связывать
<?php foreach ($arItem['PROPERTIES']['IMG_BEFORE']['VALUE'] as $index => $arImgBeforeSrc): ?>
    <?php $arImgAfterSrc = $arItem['PROPERTIES']['IMG_AFTER']['VALUE'][$index] ?>
    <div class="cocoen">
      <img data-src="" class="blog-list__item-image<?=($arParams['ROUNDED_IMAGE'] ? ' rounded' : '');?>" src="<?=CFile::getPath($arImgBeforeSrc);?>" alt="">
      <img data-src="" class="blog-list__item-image<?=($arParams['ROUNDED_IMAGE'] ? ' rounded' : '');?>" src="<?=CFile::getPath($arImgAfterSrc);?>" alt="">
    </div>
<?php endforeach ?>

Только в коде не учтен момент, когда изображение "после" может отсутствовать. Во избежание ошибки, вторую картинку лучше в условии выводить и в объявлении переменной $arImgAfterSrc проверку сделать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы