<?php
$resultObject = [
['name' => 'Tom', 'value' => 15, 'year' => 2018],
['name' => 'Tom', 'value' => 4, 'year' => 2019],
['name' => 'Tom', 'value' => 6, 'year' => 2020],
['name' => 'Kate', 'value' => 18, 'year' => 2018],
['name' => 'Kate', 'value' => 20, 'year' => 2019],
];
$grouped = [];
$columns = [];
foreach ($resultObject as $row) {
$grouped[$row['name']][$row['year']] = $row['value'];
$columns[$row['year']] = $row['year'];
}
sort($columns);
$defaults = array_fill_keys($columns, '-');
array_unshift($columns, 'name');
echo "<table>\n";
printf(
"<tr><th>%s</th></tr>\n",
implode('</th><th>', $columns)
);
foreach ($grouped as $name => $records) {
printf(
"<tr><td>%s</td><td>%s</td></tr>\n",
$name,
implode('</td><td>', array_replace($defaults, $records))
);
}
echo "</table>";
preferences:
27.72 ms | 409 KiB | 5 Q