'label of set', * 'entries' => * [ * 'label-of-entry' => 'value' * ] * ] * 1: [ * 'label' => 'label of another set', * 'entries' => * [ * 'label-of-entry' => 'value' * ] * ] * * * @param array $data * * @return array */ public function multiSet(array $data): array { $chartData = [ 'count' => count($data), 'labels' => array_keys($data[0]['entries']), // take ALL labels from the first set. 'datasets' => [], ]; foreach ($data as $set) { $chartData['datasets'][] = [ 'label' => $set['label'], 'data' => array_values($set['entries']), ]; } return $chartData; } /** * Will generate a (ChartJS) compatible array from the given input. Expects this format: * * 'label-of-entry' => value * 'label-of-entry' => value * * @param string $setLabel * @param array $data * * @return array */ public function singleSet(string $setLabel, array $data): array { $chartData = [ 'count' => 1, 'labels' => array_keys($data), // take ALL labels from the first set. 'datasets' => [ [ 'label' => $setLabel, 'data' => array_values($data), ], ], ]; return $chartData; } }