Php 如何跨两个div生成嵌套For循环分割输出?
使用Wordpress和PHP,我想编写两个for循环,允许我使用bootstrap输出html,从后端的库中创建图像网格,而不是将所有图像单独编码到页面中。 外部for循环工作并创建两个引导div。正是内部循环中的if语句给我带来了问题 我上一次尝试使用if语句在元素4的早期结束内循环,并落入将关闭第一个div的外循环。之后,外循环将再次启动,创建另一个div,但我不知道如何在测试数组的元素5重新启动内循环 我需要做什么才能使这个for循环停止在第4个div之后填充第一个div并结束第一个div,但将在第5个div处再次开始,开始第二个div并运行循环的其余部分 现在这就是我所拥有的。我使用一个数值数组作为测试,以使循环工作Php 如何跨两个div生成嵌套For循环分割输出?,php,wordpress,for-loop,if-statement,Php,Wordpress,For Loop,If Statement,使用Wordpress和PHP,我想编写两个for循环,允许我使用bootstrap输出html,从后端的库中创建图像网格,而不是将所有图像单独编码到页面中。 外部for循环工作并创建两个引导div。正是内部循环中的if语句给我带来了问题 我上一次尝试使用if语句在元素4的早期结束内循环,并落入将关闭第一个div的外循环。之后,外循环将再次启动,创建另一个div,但我不知道如何在测试数组的元素5重新启动内循环 我需要做什么才能使这个for循环停止在第4个div之后填充第一个div并结束第一个di
<?php $arr = array(1, 2, 3, 4, 5, 6, 7, 8);
$length = count($arr);
?>
<div class="row w-100"> //Outer container div
<?php for($i = 1; $i <= 2; $i++) //Outer loop
{
?>
<div class="row w-100"> //Inner output div
<?php
for($j = 0; $j <= $length; $j++) //Inner loop
{
if($j == 4)
{
break;
}
else
{
echo $arr[$j];
}
}
?>
</div>
<?php
} //End outer loop
?>
</div>
//外货柜部
//内输出分频器
当内部循环将内容输出到div中时,看起来是这样的:1234希望这能解决你的问题:)
只需扩展
$j
的范围:
<?php $arr = array(1, 2, 3, 4, 5, 6, 7, 8);
$length = count($arr);
$j = 0;
?>
<div class="row w-100">
<?php for($i = 1; $i <= 2; $i++) //Outer loop
{
?>
<div class="row w-100">
<?php
while ($j <= $length) //Inner loop
{
if($j == 4)
{
break;
}
else
{
echo $arr[$j];
}
$j++;
}
?>
</div>
<?php
} //End outer loop
?>
</div>
我建议不要嵌套-更简单的代码:
<?php
$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
$count = sizeof($arr);
$cols = 4;
for($i=0; $i< $count; $i++) {
if ($i % $cols == 0) {echo 'open outer div';}
echo 'inner div';
if (($i % $cols == $cols - 1) || ($i == $count - 1)) {
//also supporting non complete "inner loop".
echo 'close outer div';
}
}
这个怎么样?简单明了
$arr = array(1, 2, 3, 4, 5, 6, 7, 8);
$length = count($arr);
$group = array();
$count = 0;
$div = 4;
foreach($arr as $i) {
$group[] = $i;
$count++;
if($count % $div == 0){
echo "<div>".implode('',$group)."</div>";
$group = array();
$count = 0;
}
}
$arr=array(1,2,3,4,5,6,7,8);
$length=计数($arr);
$group=array();
$count=0;
$div=4;
外汇($arr为$i){
$group[]=$i;
$count++;
如果($count%$div==0){
echo“”。内爆(“”,$group)。“”;
$group=array();
$count=0;
}
}
您需要对您的IF条件进行微小更改,并定义一个新的变量$l=0强>
对于($j=l;$j,我可以理解,您希望在一行中显示4列。如果您想这样做,则无需中断循环。您只需更改引导类,请查看以下内容:
是否要在一行中创建4个列,其余4个列将位于第二行?是的,这是我最终尝试实现的结果。我已经发布了我的答案,请检查并告知我是否有任何错误
$arr = array(1, 2, 3, 4, 5, 6, 7, 8);
$length = count($arr);
$group = array();
$count = 0;
$div = 4;
foreach($arr as $i) {
$group[] = $i;
$count++;
if($count % $div == 0){
echo "<div>".implode('',$group)."</div>";
$group = array();
$count = 0;
}
}
<?php
$arr = array(1, 2, 3, 4, 5, 6, 7, 8);
$length = count($arr);
$l=0;
?>
<div class="row w-100">
<?php for($i = 1; $i <= 2; $i++) //Outer loop
{
?>
<div class="row w-100">
<?php
for($j = l; $j <= $length; $j++) //Inner loop
{
if($j == ($l+$length/2))
{
$l = $j;
break;
}
else
{
echo $arr[$j];
}
}
?>
</div>
<?php
} //End outer loop
?>
</div>