<?php $rows = [ ['name' => 'name_one', 'y' => '2016', 'q' => '2', 'st' => 1], ['name' => 'name_one', 'y' => '2017', 'q' => '3', 'st' => 2], ['name' => 'name_two', 'y' => '2017', 'q' => '1', 'st' => 1], ['name' => 'name_two', 'y' => '2017', 'q' => '2', 'st' => 2], ]; $data = []; $names = []; $years = []; $qs = []; foreach ($rows as $row) { $link = &$data; foreach (['name', 'y'] as $field) { if (!isset($link[$row[$field]])) $link[$row[$field]] = []; $link = &$link[$row[$field]]; } $link[$row['q']] = $row['st']; unset($link); // $names[$row['name']] = true; $years[$row['y']] = true; $qs[$row['q']] = true; } // Опционально сортируем $names = array_keys($names); sort($names); $years = array_keys($years); sort($years); $qs = array_keys($qs); sort($qs); ?> <table> <tr> <th>Name <?foreach($years as $y):?> <th colspan="<?=count($qs)?>"><?=$y?> <?endforeach?> <tr> <th> <?foreach($years as $y):?> <?foreach($qs as $q):?> <th>q<?=$q?> <?endforeach?> <?endforeach?> <?foreach($names as $name):?> <tr> <td><?=$name?> <?foreach($years as $y):?> <?foreach($qs as $q):?> <td><?=isset($data[$name][$y][$q]) ? $data[$name][$y][$q] : '' ?></td> <?endforeach?> <?endforeach?> <?endforeach?> </table>
You have javascript disabled. You will not be able to edit any code.