A PHP function for making HTML tables

A PHP function to help reduce the load of duplicate code when producing HTML tables.

This works by looping through an array for the thead (columns <–>) and then the td content (rows). By getting a count of how many columns there are and then counting each loop through the td data as to know when to implement a new row.

In this format, it is easy to use with a return from a database query as an array.

The function:

function outputString(string $string)
{
    echo $string;
}

function tableBuilder(array $theads, array $data, string $table_class = 'table', string $thead_class = '')
{
    (empty($table_class)) ? $tbl = "" : $tbl = " class='$table_class'";
    (empty($thead_class)) ? $th = "" : $th = " class='$thead_class'";
    outputString("<table$tbl>");
    outputString("<thead$th><tr>");
    foreach ($theads as $column) {
        outputString("<th>$column</th>");
    }
    outputString("</tr></thead><tbody>");
    $columns = count($theads);
    $col_count = 0;
    foreach ($data as $content) {
        if (($col_count % $columns) === 0) {
            outputString("<tr>");
        }
        $col_count++;
        outputString("<td>$content</td>");
        if (($col_count % $columns) === 0) {
            outputString("</tr>");
        }
    }
    outputString("</tbody></table>");
}

Calling:

$theads = ['Player', 'Score', 'Bonus'];

$rows = ['George', '44', '8', 'Ben', '39', '6', 'Tom', '41', '5'];

tableBuilder($theads, $rows);

php table builder function

Raw output:

<table class='table'>
  <thead>
    <tr>
      <th>Player</th>
      <th>Score</th>
      <th>Bonus</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>George</td>
      <td>44</td>
      <td>8</td>
    </tr>
    <tr>
      <td>Ben</td>
      <td>39</td>
      <td>6</td>
    </tr>
    <tr>
      <td>Tom</td>
      <td>41</td>
      <td>5</td>
    </tr>
  </tbody>
</table>

Gist link