How to convert an array to a html table
Can someone help me with this array that I have? I want to create a table that is a maximum of 5 columns and a maximum of 15 rows. If there are only 4 rows, for example, then only 4 rows should be shown instead of the 15. If there are only 3 cells that have data then the the remaining 2 should be padded with $nbsp;
.
Here is my sample array:
Array
(
[0] => Array
(
[name] => test1
[item_id] => 1
)
[1] => Array
(
[name] => test2
[item_id] => 2
)
[2] => Array
(
[name] => test3
[item_id] => 3
)
[3] => Array
(
[name] => test4
[item_id] => 4
)
[4] => Array
(
[name] => test5
[item_id] => 5
)
[5] => Array
(
[name] => test6
[item_id] => 6
)
)
My data repeats if there is a new row added. This is my issue at present.
$row 开发者_JAVA百科= count( $array ) / 5;
$col = 5;
echo'<table border="1" width="700">';
for( $i = 0; $i < $row; $i++ )
{
echo'<tr>';
for( $j = 0; $j < $col; $j++ ) {
if( ! empty( $array[$j] ) ) {
echo '<td>'.$array[$j]['item_id'].'</td>';
}
}
echo'</tr>';
}
echo'</table>';
Let's call your array $rows
, ok?
echo "<table>";
foreach ($rows as $row) {
echo "<tr>";
foreach ($row as $column) {
echo "<td>$column</td>";
}
echo "</tr>";
}
echo "</table>";
Using foreach
is more idiomatic for looping trough arrays in php, and it greatly increase your code's readability. Plus, the only variable you need for this is one containing the array itself.
Check out:
PHP array to table
Or this class
It is basically simple logic something like this:
echo "<table border=\"5\" cellpadding=\"10\">";
for ($i=0; $i < count($input); $i++)
{
echo "<tr>";
for ($c=0; $c<$cols; $c++)
{
echo "<td>$input[$i]</td>";
}
echo "</tr>";
}
echo "</table>";
Here's a snippet I wrote to test converting a php array to html.
$row = array(
'column 1' => 'value',
'column 2' => 'value',
'column 3' => 'value',
'column 4' => 'value',
'column 5' => 'value',
'column 6' => 'value',
'column 7' => 'value',
);
$rows = array($row, $row, $row, $row, $row, $row, $row, $row, $row, $row);
print array_to_html($rows);
function array_to_html($data) {
$report = "";
if (count($data) > 0) {
$report .= "<table>";
$report .= sprintf("<tr><th>%s</th></tr>", join("</th><th>", array_keys($data[0])));
foreach ($data as $row) {
$report .= "<tr>";
foreach ($row as $column) {
$report .= "<td>$column</td>";
}
$report .= "</tr>";
}
$report .= "</table>";
} else {
$report = "No data";
}
return $report;
}
精彩评论