два вложенных foreach - PullRequest
       3

два вложенных foreach

0 голосов
/ 09 февраля 2019

У меня есть 2 таблицы в базе данных, первая - $slide_images, вторая - $why_us, и я использую карусель сов для изображений.

  • $slide_images содержит 10 строк.
  • $why_us содержит 3 строки.

Мне нужно, чтобы каждое изображение занимало одну строку $why_us, то есть первые 3 изображения будут иметь текст из таблицы $why_us.Я пробовал много способов сделать это, но мне не дали того, что я хочу, и я не могу редактировать таблицы, чтобы сделать это, и столбец id не вложен, чтобы соединить их с SQL.Могу ли я решить их с помощью вложенного foreach?

<div class="home_area">
            <!-- start Carousel -->
        <div class="owl-carousel block_1">
                <?php
                if(is_array($slide_image)){
                foreach($slide_image as $src){
            ?>  
            <div class="overlay-text">
                <div class="carousel_item" style="background-image:url('<?php echo base_url(); echo $src->url; ?>');"></div>
                    <div class="text-layer">

                        <!--============ start we us ================ -->
                            <?php if($why_us != ''){ ?>
                                <div class="we">
                                    <div class="container">
                                        <div class="row">
                                                <?php foreach($why_us as $we){ ?>
                                                    <div class="box">
                                                        <h6><?php echo $we->name; ?></h6>
                                                        <div class="text"><?php echo $we->desc; ?></div>
                                                    </div>
                                            <?php }?>
                                        </div>
                                    </div>
                                </div>
                            <?php } ?>
                        <!--============= end we us ========== -->

                    </div>
            </div>
            <?php } }?>
        </div>
        <!-- end Carousel -->
</div>

Надеюсь, я хорошо описал свой вопрос.

1 Ответ

0 голосов
/ 09 февраля 2019

Вы не должны использовать вложенные циклы.Это создает перекрестное произведение между массивами.

Вместо этого у вас должен быть только один цикл, который использует соответствующие элементы обоих массивов.Поскольку один из массивов меньше, вы должны проверить, что индекс существует.

foreach ($slide_image as $index => $src) {
    // code that uses `$src` here
    if (isset($why_us[$index])) {
        $we = $why_us[$index];
        // code that uses $we here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...