November 2002
Intermediate to advanced
640 pages
16h 33m
English
Converting an array into a horizontally columned table places a fixed number of elements in a row. The first set goes in the opening table row, the second set goes in the next row, and so forth. Finally, you reach the final row, where you might need to optionally pad the row with empty table data cells.
The function pc_grid_horizontal( )
, shown in Example 4-8,
lets you specify an array and number of columns. It assumes your
table width is 100%, but you can alter the
$table_width variable to change this.
Example 4-8. pc_grid_horizontal( )
function pc_grid_horizontal($array, $size) { // compute <td> width %ages $table_width = 100; $width = intval($table_width / $size); // define how our <tr> and <td> tags appear // sprintf() requires us to use %% to get literal % $tr = '<tr align="center">'; $td = "<td width=\"$width%%\">%s</td>"; // open table $grid = "<table width=\"$table_width%\">$tr"; // loop through entries and display in rows of size $sized // $i keeps track of when we need a new table tow $i = 0; foreach ($array as $e) { $grid .= sprintf($td, $e); $i++; // end of a row // close it up and open a new one if (!($i % $size)) { $grid .= "</tr>$tr"; } } // pad out remaining cells with blanks while ($i % $size) { $grid .= sprintf($td, ' '); $i++; } // add </tr>, if necessary $end_tr_len = strlen($tr) * -1; if (substr($grid, $end_tr_len) != $tr) { $grid .= '</tr>'; } else { $grid = substr($grid, 0, $end_tr_len); ...