我循环浏览一些mysql结果并需要在除最后一行之外的每一个中添加<span id=bottom></span>
,最简单的方法是什么?
我是否必须计算行数然后使用计数器和if / else语句?或者有更简单的方法吗?
答案 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'];
}