61 lines
912 B
PHP
61 lines
912 B
PHP
<?php
|
|
|
|
namespace alveolata\html;
|
|
|
|
|
|
/**
|
|
* @param null|array $titles {null|list<string>}
|
|
* @param array $data {list<list<string>>}
|
|
*/
|
|
function table(
|
|
array $titles,
|
|
array $data
|
|
) : string
|
|
{
|
|
$html = '';
|
|
$html .= ("<table>\n");
|
|
if (! is_null($titles)) {
|
|
$html .= ("<thead>\n");
|
|
$html .= sprintf(
|
|
"<tr>%s</tr>\n",
|
|
implode(
|
|
'',
|
|
array_map(
|
|
function (string $title) : string {
|
|
return sprintf(
|
|
"<th>%s</th>",
|
|
$title
|
|
);
|
|
},
|
|
$titles
|
|
)
|
|
)
|
|
);
|
|
$html .= ("</thead>\n");
|
|
}
|
|
{
|
|
$html .= ("<tbody>\n");
|
|
foreach ($data as $line) {
|
|
$html .= sprintf(
|
|
"<tr>%s</tr>\n",
|
|
implode(
|
|
'',
|
|
array_map(
|
|
function (string $field) : string {
|
|
return sprintf(
|
|
"<td>%s</td>",
|
|
$field
|
|
);
|
|
},
|
|
$line
|
|
)
|
|
)
|
|
);
|
|
}
|
|
$html .= ("</tbody>\n");
|
|
}
|
|
$html .= ('</table>' . "\n");
|
|
return $html;
|
|
}
|
|
|
|
?>
|