开发者

Add string to all looped items except the last one

I'm looping through some mysql results and need to add <span id=bottom></span> to each of them except the last row. What's the easiest way of doing this?

Will I have to count rows and then use a c开发者_如何学Goounter and an if/else statement? Or is there an easier method?


Try something like this:

$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..

Not very short, but that would do the trick. Alternatively you could do what you suggested:

$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..

Best wishes, Fabian


I'm not a PHP expert, but can you put each row in an array? That way to know the length and you can loop through the array.


$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..


You can avoid copying all the data before processing it if you fetch a record in advance before printing it (or the other way round: process the previously fetched record)

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'];
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜