代码之家  ›  专栏  ›  技术社区  ›  Dipak

如何在while循环上方打印变量

  •  0
  • Dipak  · 技术社区  · 6 年前

    我正试图进入 php variable 由于 while loop .这个 variable 必须打印 在while循环之上 .跟在后面不管用

    <?php
      $title = '';    
    ?>
    <a href=""><?php echo $title?></a>
    <?php
        $query = $con->prepare("SELECT * FROM notice WHERE id=:id");
        $query->bindParam(':id',$_GET['id']);
        $query->execute();
            while($row=$query->fetch(PDO::FETCH_ASSOC)){
            $title .= $row['title'];
    ?>
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   TiiJ7    6 年前

    PHP总是从上到下运行,因此您不能 echo 在用值填充之前的变量。

    因此,在这种情况下,您可以通过放置 回声 在回路下方(即 结束 循环)。

    <?php
      $title = '';    
      $query = $con->prepare("SELECT * FROM notice WHERE id=:id");
      $query->bindParam(':id',$_GET['id']);
      $query->execute();
      while($row=$query->fetch(PDO::FETCH_ASSOC)){
          $title .= $row['title'];
          // ....
      }
    ?>
    <a href=""><?php echo $title?></a>
    

    如果循环本身也生成输出,并且您希望将标题放在此输出之上,则需要 buffer the output 直到你准备好发送它。

    <?php
      $title = '';    
      $query = $con->prepare("SELECT * FROM notice WHERE id=:id");
      $query->bindParam(':id',$_GET['id']);
      $query->execute();
      ob_start();
      while($row=$query->fetch(PDO::FETCH_ASSOC)){
           $title .= $row['title'];
           // Produce any output you want
      }
      $loop_output = ob_get_clean();
    ?>
    <a href=""><?php echo $title ?></a>
    <?php echo $loop_output ?>