繁体   English   中英

一种简单的方法来打印内容,仅在while循环内一次?

[英]Easy method to print something, only once inside while loop?

我想从一个表中获取信息,并在while循环的帮助下循环进行直到完成。 虽然,我希望在循环内只打印一次一列。

我想出了两种解决方案...

<?php   
$i = 0;
// while loop start
if($i == 0){
// stuff to print
$i++;
}
// while loop end
?>

当然,我可以在while循环之前进行另一个查询。

但是这些方法确实效率不高。 有没有那么麻烦的方式来做到这一点?

实际上,我可以在while循环之前运行另一个查询,如果它不会变得那么凌乱,或者如果我可以重用该循环的查询(我从表中获取所有内容)的话,我会没事的。 我尝试使用mysql_fetch_field进行实验,但不确定是否可以使用它,或者这是否有助于*尴尬*


当前,代码如下所示:

$fetch = mysql_query("SELECT *
                      FROM `pms`
                      JOIN `pm_conversations` ON pms.ConvID = pm_conversations.ID
                      WHERE `ConvID`='".$_GET['id']."'");

$i = 0;
while($print = mysql_fetch_array($fetch)){
  if($i == 0){
  echo $print['Subject'];
  $i++;
  }
  <table>
  <th><?=$print['From']?>, <?=$print['DateSent']?></th>
  <tr><td><?=$print['Message']?></td></tr>
  </table>
}

如果我正确理解了您的问题,我认为您有正确的主意。 我猜您想在第一次迭代中额外打印一些内容(例如使用数组键的列标题)?

$cnt= 0;
while($row = mysql_fetch_assoc($res)) {
    if(0 == $cnt++) {
        // first iteration only
    }
    // all iterations
}

或者,如果我完全不了解您要做什么,那么实际情况会有所帮助。

您是否考虑过……而? 它具有while的所有优点,并且它允许代码在第一次迭代之前有条件地发生。

$res = mysql_fetch_array( $resource );
// run the magical run once query/functionality/bunnies/whatever
// Hey, I'm tired. Let there be bunnies.
do
{
    // put the regular while loop constructs in here;
}
while( $res = mysql_fetch_array( $resource ) );
$rs = mysql_query("SELECT * FROM tbl");
$row = mysql_fetch_array($rs);

do {
    echo $row['column_name'];
} while($row = mysql_fetch_array($rs));

我不知道这是否是您所需要的。 希望这对您有所帮助。 =]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM