我想创建一个forloop,它将根据从数据库中获取的数据创建一个表。
获得的结果看起来像这样。
id/cart_id/title/price/quantity
1 / 1 /book1/10.00/ 2
2 / 1 /book2/19.00/ 1
在for循环中,正常创建2个表行来保存这2个结果。但是我想要一个to rowspan并且只显示一次cart_id“1”。
这是我目前的代码
<?php
for($i = 0; $i < count($history); $i++) {
$a = $history[$i]['cart_id'];
echo '<tr >';
if($history[$i]['cart_id'] == $history[$i]['cart_id']){
echo '<td rowspan="2">'.$a.'</td>';
}
echo '<td>'.$history[$i]['title'].'</td>';
echo '<td>'.$history[$i]['price'].'</td>';
echo '<td>'.$history[$i]['quantity'].'</td>';
echo '<td>'.$history[$i]['cart_id'].'</td>';
echo '</tr>';
}
?>
修改
original output:
[id:1][book1][19.90][2]
[id:1][book2][10.90][1]
what i wanted: The id row will rowspan according to the number of same ID.Thus showing ony 1 "id:1"
[ ][book1][19.90][2]
[id:1][book2][10.90][1]
如何实现我想要的目标?
答案 0 :(得分:1)
您可以使用额外的for
循环来实现此目的:
<?php
$lastcart = FALSE ;
for($i = 0; $i < count($history); $i++) {
$a = $history[$i]['cart_id'];
echo '<tr >';
$rowspan = 0;
for(
$j=$i;
$history[$i]['cart_id'] !== $lastcart &&
$j < count($history) &&
$history[$j]['cart_id']==$history[$i]['cart_id'];
$j++
){
$rowspan++ ;
}
if($rowspan > 0){
$lastcart = $history[$i]['cart_id'] ;
echo '<td rowspan="{$rowspan}">'.$a.'</td>';
}
echo '<td>'.$history[$i]['title'].'</td>';
echo '<td>'.$history[$i]['price'].'</td>';
echo '<td>'.$history[$i]['quantity'].'</td>';
echo '<td>'.$history[$i]['cart_id'].'</td>';
echo '</tr>';
}
?>