为循环运行两次相同的for循环,但忽略第一行

时间:2019-06-03 07:04:47

标签: php for-loop

我正在运行两个for循环,它们执行相同的操作,因为周围的HTML标记不同。

出于视觉目的,这是结构的外观

enter image description here

右侧的大卡片将通过loop 1创建,左侧的其他三张卡片将通过loop 2创建。

问题:

  • loop 2中,正在获取第一行(如 大卡)。我本质上总是希望大牌拉第1行,小牌拉2、3和4。
  • 有没有比运行两个基本上相同的for循环更干净的方法?

当前代码:

<!-- main wrapper-->
<div class="row justify-content-center">
  <div class="col-12 d-flex flex-row">

    <!---------------->
    <!-- FOR LOOP 1 -->
    <!---------------->

    <?php 
    $col = $dom->getElementsByTagName('item');

    $i = 0;
    foreach( $col as $item ){
        $blogTitle=$item->childNodes[1]->nodeValue;
        $blogAuthor=$item->childNodes[11]->nodeValue;
        
    // limit 4
    if(++$i > 4) break;
            
  ?>

    <!-- for the first item, show this markup -->
    <?php if ($i == 1) { ?>
    <div class="col-6">
      <div class="item__card d-flex flex-column">
        <div>
          <span class="author"><?php echo $blogAuthor; ?></span>
          <span class="title"><?php echo $blogTitle; ?></span>
        </div>
      </div>
    </div>
    <?php } ?>

    <?php } ?>
    <!-- END FIRST FOR LOOP -->



    <!---------------->
    <!-- FOR LOOP 2 -->
    <!---------------->

    <?php if ($i > 1) { ?>
    <div class="resourceGrid--small d-flex flex-column col-6">
      <?php
       $col2 = $dom->getElementsByTagName('item');

       $i = 0;
       foreach( $col2 as $item ){
           $blogTitle=$item->childNodes[1]->nodeValue;
           $blogAuthor=$item->childNodes[11]->nodeValue;

       if(++$i > 3) break;
       ?>

        <div class="resourceGrid--smallCard">
          <div class="item__card">
            <div>
              <span class="author"><?php echo $blogAuthor; ?></span>
              <span class="title"><?php echo $blogTitle; ?></span>
            </div>
          </div>

        </div>
        <?php } ?>
        <!-- END SECOND FOR LOOP -->
        <?php } ?>
        <!-- endif -->
    </div>

  </div>
</div>

0 个答案:

没有答案