я хотел создать forloop, который создаст таблицу из данных, полученных из базы данных.
полученный результат выглядит примерно так.
id/cart_id/title/price/quantity 1 / 1 /book1/10.00/ 2 2 / 1 /book2/19.00/ 1
В цикле for это нормально, чтобы создать 2 строки таблицы, чтобы провести эти 2 результата. Тем не менее, я хочу один из строк и покажу только 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]
Как можно добиться того, чего я хочу?
Вы можете добиться этого с помощью дополнительного цикла:
<?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>'; } ?>