不要在 foreach 引导程序中循环代码

Posted

技术标签:

【中文标题】不要在 foreach 引导程序中循环代码【英文标题】:Don't loop code inside foreach bootstrap 【发布时间】:2015-02-18 09:00:34 【问题描述】:

我正在循环使用col-md-8 Bootstrap 类的未知数量的容器。我想在第一次迭代旁边包含一个 col-md-4 类作为侧边栏提供。

我需要在第一次迭代后暂停循环,包括我的 div,然后从它停止的地方继续循环。 foreach 循环是否有 php 暂停,以便我可以实现这一点。

<?php  foreach ($news as $new) : ?>
<div class="col-md-8">

</div>
<?php endforeach; ?>

【问题讨论】:

使用计数器并将其设置为 0,然后使用 if 子句检查计数器是否为 0,如果是则添加 col-md-4 列,否则什么也不做。 你有什么尝试吗?如果您尝试某事、偶然发现一个特定的困难并询问它、展示您的工作,那么提供帮助会更容易(并且对您来说更有价值)。 您所问的实际上是不可能的。脚本逐行运行;你不能停在那里然后去这里然后回到那里。下面的 VDesign 和 donald123 有你的解决方案。 是的,我确实尝试过,我尝试将 div 放在 foreach 之前,然后使用引导程序推拉,但是当 col-md-8 不在 col-md-4 旁边时其余的迭代被拉出容器。我尝试将它放在 foreach 中并在第一个孩子上使用 display none 和 display 块,但这不是正确的方法。 如果你想做一个侧边栏你最好把它完全拆分&lt;div class="col-md-12"&gt;&lt;div class="col-md-8"&gt;&lt;? // News items loop here ?&gt;&lt;/div&gt;&lt;div class="col-md-4"&gt;&lt;? // sidebar here ?&gt;&lt;/div&gt;&lt;/div&gt; 【参考方案1】:

你可以使用 if 语句

<?php  
   $i=1;
   foreach ($news as $new) : ?>
        <div class="col-md-8">

         </div>
        <?php if($i==1):?>
          <div class="col-md-4">

         </div>
        <?php endif;?>
        <?php $i++;?>
<?php endforeach; ?>

【讨论】:

更干净的使用if(++$i == 1): @AmazingDreams 你是对的,但我认为 OP 在 php 中的深度不足以理解你的行;) 这看起来不错我想我理解正确,运行 foreach 但是当 'i=1' 插入 col-md-4 但每次迭代都会增加 'i' 的值所以它是'不包括每个迭代?【参考方案2】:

试试这个:

<?php
 $len = count($news); 
 for ($i = 0; $i < $len; $i++)  
   if ($i == 0) 
?>
<div class="col-md-4">

</div>
<?php  ?>
<div class="col-md-8">

</div>
<?php  ?>

【讨论】:

for ($i = 0; $i 在每个循环的条件中使用 count() 没有好的做法 count()将被点燃!

以上是关于不要在 foreach 引导程序中循环代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在foreach循环的每一行中放置引导4列

在 Knockout foreach 循环中引导 4 手风琴,在展开/折叠问题时更改图标

为啥 Owl Carousel 在我的 Laravel 应用程序中会破坏引导模式?

在引导加载程序中跳转到0x7C00不会引起无限循环

尝试在 php 中创建循环卡(引导程序)

您如何在引导程序 4 中正确断点卡片组 [重复]