How to create a HTML Table from a PHP array?
It would be better to just fetch the data into array like this:
<?php$shop = array( array("title"=>"rose", "price"=>1.25 , "number"=>15), array("title"=>"daisy", "price"=>0.75 , "number"=>25), array("title"=>"orchid", "price"=>1.15 , "number"=>7) ); ?>
And then do something like this, which should work well even when you add more columns to your table in the database later.
<?php if (count($shop) > 0): ?><table> <thead> <tr> <th><?php echo implode('</th><th>', array_keys(current($shop))); ?></th> </tr> </thead> <tbody><?php foreach ($shop as $row): array_map('htmlentities', $row); ?> <tr> <td><?php echo implode('</td><td>', $row); ?></td> </tr><?php endforeach; ?> </tbody></table><?php endif; ?>
Here's mine:
<?php function build_table($array){ // start table $html = '<table>'; // header row $html .= '<tr>'; foreach($array[0] as $key=>$value){ $html .= '<th>' . htmlspecialchars($key) . '</th>'; } $html .= '</tr>'; // data rows foreach( $array as $key=>$value){ $html .= '<tr>'; foreach($value as $key2=>$value2){ $html .= '<td>' . htmlspecialchars($value2) . '</td>'; } $html .= '</tr>'; } // finish table and return it $html .= '</table>'; return $html;}$array = array( array('first'=>'tom', 'last'=>'smith', 'email'=>'tom@example.org', 'company'=>'example ltd'), array('first'=>'hugh', 'last'=>'blogs', 'email'=>'hugh@example.org', 'company'=>'example ltd'), array('first'=>'steph', 'last'=>'brown', 'email'=>'steph@example.org', 'company'=>'example ltd'));echo build_table($array);?>