不要在 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 块,但这不是正确的方法。
如果你想做一个侧边栏你最好把它完全拆分<div class="col-md-12"><div class="col-md-8"><? // News items loop here ?></div><div class="col-md-4"><? // sidebar here ?></div></div>
【参考方案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 引导程序中循环代码的主要内容,如果未能解决你的问题,请参考以下文章
在 Knockout foreach 循环中引导 4 手风琴,在展开/折叠问题时更改图标