Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何跨两个div生成嵌套For循环分割输出?_Php_Wordpress_For Loop_If Statement - Fatal编程技术网

Php 如何跨两个div生成嵌套For循环分割输出?

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

使用Wordpress和PHP,我想编写两个for循环,允许我使用bootstrap输出html,从后端的库中创建图像网格,而不是将所有图像单独编码到页面中。 外部for循环工作并创建两个引导div。正是内部循环中的if语句给我带来了问题

我上一次尝试使用if语句在元素4的早期结束内循环,并落入将关闭第一个div的外循环。之后,外循环将再次启动,创建另一个div,但我不知道如何在测试数组的元素5重新启动内循环

我需要做什么才能使这个for循环停止在第4个div之后填充第一个div并结束第一个div,但将在第5个div处再次开始,开始第二个div并运行循环的其余部分

现在这就是我所拥有的。我使用一个数值数组作为测试,以使循环工作

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