Автоматически определять номер одной записи и делать строки в соответствии с номером?

я хотел создать 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>'; } ?>