两个嵌套的foreach

时间:2019-02-09 07:10:12

标签: php foreach

我在数据库中有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 :(得分:3)

您不应使用嵌套循环。这样会在阵列之间产生叉积。

相反,您应该只有一个循环使用两个数组的相应元素。由于其中一个数组较小,因此应检查索引是否存在。

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
    }
}