Если я правильно понял, вы получаете таблицу с 4 столбцами и переменным количеством строк, и вы хотите преобразовать ее в таблицу с переменным количеством столбцов. Для этого использование структуры данных, в которой каждый элемент отличается от предыдущего, может сделать все сложнее, чем нужно. Я предлагаю вам использовать фиксированную структуру:
// I'm assuming you have a PHP array as starting point
$input = [
[
'membername' => 'NAME',
'bookingdate' => '2020-02-03',
'categoryid' => 1,
'dailyworkhourssum' => '7.70',
],
[
'membername' => 'NAME',
'bookingdate' => '2020-02-03',
'categoryid' => 3,
'dailyworkhourssum' => '1.2',
],
[
'membername' => 'NAME',
'bookingdate' => '2020-02-05',
'categoryid' => 3,
'dailyworkhourssum' => '7.70',
],
];
$output = [];
foreach ($input as $data) {
// We'll group by booking date
if (!isset($output[$data['bookingdate']])) {
$output[$data['bookingdate']] = [
'membername' => $data['membername'],
'bookingdate' => $data['bookingdate'],
'categoryid' => $data['categoryid'],
'dailyworkhourssum' => [],
];
}
// A single date may have several daily work hours
$output[$data['bookingdate']]['dailyworkhourssum'][] = $data['dailyworkhourssum'];
}
// We discard array keys (we only needed them to group)
echo json_encode(array_values($output));
[{
"membername": "NAME",
"bookingdate": "2020-02-03",
"categoryid": 1,
"dailyworkhourssum": ["7.70", "1.2"]
}, {
"membername": "NAME",
"bookingdate": "2020-02-05",
"categoryid": 3,
"dailyworkhourssum": ["7.70"]
}]
Где бы вы ни потребляли этот JSON, вам просто нужно l oop массив dailyworkhourssum
. Вы также можете захотеть l oop всю структуру перед печатью таблицы и сохранить счетчик, чтобы определить максимальное количество столбцов, чтобы вы могли рисовать пустые ячейки там, где это необходимо (таблицы прямоугольные angular).