将代码应用于所有循环项目但最后一个

时间:2009-12-05 02:03:10

标签: php mysql

我循环浏览一些mysql结果并需要在除最后一行之外的每一个中添加<span id=bottom></span>,最简单的方法是什么?

我是否必须计算行数然后使用计数器和if / else语句?或者有更简单的方法吗?

4 个答案:

答案 0 :(得分:4)

尝试这样的事情:

$result = mysql_query($sql);
$list = array();
while($row = mysql_fetch_assoc($result))
{
  $list[] = $row;
}
$lastItem = array_pop($list);
foreach($list as $item) {
  echo sprintf('<span id="bottom">%s</span>', $item['value']);
}
// do something with the last item..

不是很短,但这样就可以了。或者你可以做你的建议:

$result = mysql_query($sql);
$num = mysql_num_rows($result);
for($i = 0; $i < $num-1; $i++) {
  $element = mysql_fetch_assoc($result);
  // echo here..
}
$item = mysql_fetch_assoc($result); // fetch last item..

祝福, 费边

答案 1 :(得分:0)

我不是PHP专家,但你能把每一行放在一个数组中吗?这样知道长度就可以循环遍历数组。

答案 2 :(得分:0)

$result = mysql_query($sql);
$list = array();
while($row = mysql_fetch_assoc($result))
  $list[] = $row;

foreach(array_slice($list, 0, -1) as $item) {
  echo sprintf('<span id="bottom">%s</span>', $item['value']);
}
// do something with the last item..

答案 3 :(得分:0)

如果您在打印之前提前获取记录(或反过来处理先前获取的记录),则可以避免在处理之前复制所有数据

foreach( $pdo->query('SELECT x FROM foo') as $r) {
  if ( isset($row) ) {
    echo '<span>', $row['x'], '</span>';
  }
  $row = $r;
}
if ( isset($row) ) {
  echo $row['x'];
}