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

时间:2018-06-30 13:16:10

标签: php while-loop

我正在尝试访问php variable中的while loop。必须{strong>在while循环上方打印此variable。跟随技巧不起作用

<?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 个答案:

答案 0 :(得分:2)

PHP始终从上到下运行,因此您不能echo在使用值填充变量之前先对其进行

因此,在这种情况下,您可以通过将echo放在循环下面(即循环的 end 下面)来​​解决您的问题。

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