【问题标题】:PHP loop within a loop (every x iteration for each loop)循环中的 PHP 循环(每个循环的每 x 次迭代)
【发布时间】:2017-04-28 18:47:03
【问题描述】:

基本上我要做的是循环遍历一个中继器字段(ACF,在 WordPress 中工作)以挑选出一个子字段,然后在循环中的第一个项目之后运行第二个循环来挑选另一个子字段字段。

  • 循环 1 开始
    • 项目 1,字段 1
    • 第 2 项,字段 1
    • 第 3 项,字段 1
  • 循环 1 停止
  • 循环 2 开始
    • 项目 1,字段 2
    • 第 2 项,字段 2
    • 第 3 项,字段 2
  • 循环 2 站
  • 循环 1 重新启动
    • 第 4 项,字段 1
    • 第 5 项,字段 1
    • 第 6 项,字段 1
  • 循环 1 停止
  • 循环 2 重新启动
    • 第 4 项,字段 2
    • 第 5 项,字段 2
    • 第 6 项,字段 2
  • 循环 2 站

例如,如果我有一个带有两个子字段“标题”和“内容”的转发器,输出将如下所示:

<div class="row">

  <div class="column">
    <div class="tabs-title">
      <h3>Item 1 Title</h3>
      <a href="#panel1">Learn More</a>
    </div>
  </div>
  <div class="column">
    <div class="tabs-title">
      <h3>Item 2 Title</h3>
      <a href="#panel2">Learn More</a>
    </div>
  </div>
  <div class="column">
    <div class="tabs-title">
      <h3>Item 3 Title</h3>
      <a href="#panel3">Learn More</a>
    </div>
  </div>

  <div class="tabs-panel" id="panel1">
    <div class="tabs-content">
      <p>Item 1 content goes here.</p>
    </div>
  </div>
  <div class="tabs-panel" id="panel2">
    <div class="tabs-content">
      <p>Item 2 content goes here.</p>
    </div>
  </div>
  <div class="tabs-panel" id="panel3">
    <div class="tabs-content">
      <p>Item 3 content goes here.</p>
    </div>
  </div>

</div>

<!-- Repeat loop until the end -->

到目前为止,这就是我所拥有的。只是不确定如何在每第三个选项关闭 div 之前执行第二个循环。

<?php if( have_rows('services') ) :
  $i = 1;
  $divopen = '<div class="cta row row-3 small-up-1 large-up-3 tabs" data-tabs id="example-tabs">';
  echo $divopen;
  while( have_rows('services') ) : the_row(); ?>

    <div class="column">
      <div class="tabs-title">
        <h3><?php the_sub_field('service_name'); ?></h3>
        <a href="#panel<?php echo $i; ?>">Learn More</a>
      </div>
    </div>

    <?php if($i % 3 == 0) :
      echo '</div>' . $divopen;
    endif;

  $i++; endwhile; echo '</div>';
endif; ?>

【问题讨论】:

    标签: php wordpress loops for-loop advanced-custom-fields


    【解决方案1】:

    希望你能找到这个正确的解决方案,你可以循环遍历一个数组并创建一个这样的表结构(这个答案是根据我的理解):

    $array = [
        [
            [
                'title' => "My Title 1",
                'content' => 'Content 1',
            ],
            [
                'title' => "My Title 2",
                'content' => 'Content 2',
            ],
            [
                'title' => "My Title 3",
                'content' => 'Content 3',
            ],
        ],
        [
            [
                'title' => "My Title 4",
                'content' => 'Content 4',
            ],
            [
                'title' => "My Title 5",
                'content' => 'Content 5',
            ],
        ],
    ];
    
    echo "<table style='border: 1px solid black;'><tbody>";
    foreach ($array as $key => $arr) {
        echo "<tr> . '<br>'";
        foreach ($arr as $key => $value) {
            echo "<td style='border: 1px solid black;'>";
            echo $value['title'];
            echo $value['content'];
            echo '</td>';
        }
        echo "<tr>";
    }
    echo "</tbody></table>";
    

    希望这会有所帮助!

    【讨论】: