我在数据库中有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>
我希望我能很好地描述我的问题。
答案 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
}
}