代码之家  ›  专栏  ›  技术社区  ›  rob.m

如何每10分钟关闭一个分区?

  •  0
  • rob.m  · 技术社区  · 6 年前

    我需要以下的x3

    <div class="row>
      <div class="col">
        <div class="carousel">
          <div class="carousel-cell"></div>
          <div class="carousel-cell"></div>
          <div class="carousel-cell"></div>
          <div class="carousel-cell"></div>
          <div class="carousel-cell"></div>
          <div class="carousel-cell"></div>
          <div class="carousel-cell"></div>
          <div class="carousel-cell"></div>
          <div class="carousel-cell"></div>
          <div class="carousel-cell"></div>
        </div>
      </div>
    </div>
    

    这是我的拿手好戏

    $rows = 0;
    $numPost = 0;
    while($rows < 2 ) {
        echo '<div class="row"><div class="col"><div class="carousel">';
        $posts = get_posts( array(
            'post_type' => 'post',
            'posts_per_page' => -1,
        ) );
        foreach ( $posts as $post ) {
        ?>
            <div class="carousel-cell">
                //content....
            </div>
        <?php
            $numPost++;  
            if($numPost % 10 == 0) {
                $numPost = 0;
                echo '</div></div></div><div class="row"><div class="col"><div class="carousel">';
            }  
        }
        echo '</div></div></div>';
        $rows++; 
        if($rows = 3) {
            break;
        }
    }
    

    但在这三行末尾,它给了我一个空行,如下所示:

    <div class="row>
      <div class="col">
        <div class="carousel"></div>
      </div>
    </div>
    
    3 回复  |  直到 6 年前
        1
  •  0
  •   aynber    6 年前

    不重复行的关键是关闭标记时不要重新打开它们。您将希望在循环开始时进行相同的检查以打开标记,就像稍后关闭标记一样。循环结束后你需要再次检查,这样你就不会关两次沙发了。

    $rows = 0;
    $numPost = 0;
    while($rows < 2 ) {
    
        $posts = get_posts( array(
            'post_type' => 'post',
            'posts_per_page' => -1,
        ) );
        foreach ( $posts as $post ) {
            if($numPost % 10 == 0) {
                echo '<div class="row"><div class="col"><div class="carousel">';
            }
            ?>
            <div class="carousel-cell">
                //content....
            </div>
            <?php
            $numPost++;
            if($numPost % 10 == 0) {
                $numPost = 0;
                echo '</div></div></div>';
            }
        }
        if($numPost %10 != 0) {
            echo '</div></div></div>';
        }
    
        $rows++;
        if($rows = 3) {
            break;
        }
    }
    

    另一种方法是 $closed_div 可以用作标志的变量。有 美元收盘价 在开始时设置为“真”,然后在打开和关闭潜水器时重置它。

        $closed_div = true;
        foreach ( $posts as $post ) {
            if($closed_div) {
                echo '<div class="row"><div class="col"><div class="carousel">';
                $closed_div = false;
            }
            ?>
            <div class="carousel-cell">
                //content....
            </div>
            <?php
            $numPost++;
            if($numPost % 10 == 0) {
                $numPost = 0;
                echo '</div></div></div>';
                $closed_div = true;
            }
        }
        if(!$closed_div) { // Div has not been closed
            echo '</div></div></div>';
        }
    
        2
  •  1
  •   Leonardo Hernández    6 年前

    首先检查最后一个if语句,它将是:

        if($rows == 3) {
        break;
    }
    

    而不是:

        if($rows = 3) {
        break;
    }
    
        3
  •  0
  •   Roel van Endhoven    6 年前

    整个break语句是多余的,因为循环只在 $rows < 2 所以尽快 $rows 当循环条件断开且循环停止时达到3。似乎没有任何原因导致循环不工作。

    我测试了代码,但替换了while条件 while($rows < 3) 满足你的三倍条件。我删除

    if($rows = 3) {
       break;
    }
    

    因为这是不必要的。