是否可以在每条记录后添加一个break标记,但不是最后一条记录?
这是我的部分代码:
if($db->num_rows($query) > 0)
{
while($listing = $db->fetch_array($query))
{
eval("\$page .= \"".$templates->get("page_template")."\";");
}
}
亲切的问候。
答案 0 :(得分:6)
首先:请不要使用eval,在这种情况下没有任何好处,它会带来巨大的安全风险。第二:“每个项目而不是最后一个”的理论并不那么难,因为你已经得到了总数。这样的事情可能有用:
<?php
if($db->num_rows($query) > 0)
{
$count = 0;
while($listing = $db->fetch_array($query))
{
$page .= $templates->get("page_template");
if( ++$count !== $db->num_rows( $query ) ) {
// add break tag.
}
}
}
作为替代方案(以及更清洁的解决方案),您可能希望内嵌一系列内容:
<?php
while( $listing = $db->fetch_array( $query ) ) {
$pages[] = $templates->get( 'page_template' );
}
$page = implode( 'break-tag', $pages );
答案 1 :(得分:0)
一个可能的解决方案是拥有一个计数器,比方说$i = 1
,并拥有所有行,让我们说$n = $db->num_rows($query)
。
在<br />
的情况下打印$i == $n
代码
否则,您打印正常并将$i
增加一个。
答案 2 :(得分:0)
也许不是最优雅的。
$row_count = $db->num_rows($query);
$i = 1;
if($row_count > 0)
{
while($listing = $db->fetch_array($query))
{
if($i == $row_count) { $tag = ""; }else{ $tag = "<br />"; }
// you need to put the $tag below.
eval("\$page .= \"".$templates->get("page_template")."\";");
$i++;
}
}
答案 3 :(得分:0)
如果您指的是<br/>
代码......
实现它的一种方法是将第一个循环设置的布尔值设置为true。在循环开始时,如果布尔值为true,则不打印任何内容,否则打印<br/>
。在第一次运行结束时,将其设置为false。这样它就会在行之前打印出<br/>
,但不会在第一次运行之前打印出来,并且在最后一行之后不会打印出来。
if($db->num_rows($query) > 0)
{
$first_loop = true;
while($listing = $db->fetch_array($query))
{
if($first_loop !== true)
echo "<br/>";
eval("\$page .= \"".$templates->get("page_template")."\";");
$first_loop = false;
}
}