Я пытаюсь составить диаграмму с использованием ChartJS из массива базы данных.Я должен сделать создать массив на основе дат.Одна и та же дата может быть в разных строках.
Я пытался сделать свой индекс датой, но это мало что дало.он создал 8 объектов в массиве, тогда как их должно быть 3. Массив можно использовать в ChartJS.
текущий массив
[0]=>
array(1) {
["23-5-2019"]=>
array(4) {
["time_1"]=>
string(1) "1"
["created_for"]=>
string(3) "152"
["time_2"]=>
string(1) "0"
["time_3"]=>
string(1) "0"
}
}
[1]=>
array(1) {
["23-5-2019"]=>
array(4) {
["time_1"]=>
string(1) "0"
["created_for"]=>
string(2) "152"
["time_2"]=>
string(1) "2"
["time_3"]=>
string(1) "0"
}
}
цикл foreach
foreach($records_ar as $record_hours) {
$date = $record_hours['entry_date'];
$var_end = new DateTime($record_hours['end_time']);
$var_start = new DateTime($record_hours['start_time']);
//calculate difference between start_time and end_time
$worked_hours = $var_start->diff($var_end)->format('%h');
//create date format based on location
$temp_date_element = TS_Format_Dates::getSimpleDate($date);
$data_ar[$record_hours['entry_date']] = $worked_hours;
$data_ar[$temp_date_element]['time_'.$record_hours['category_id']] = $worked_hours;
$data_ar[$temp_date_element]['created_for'] = $record_hours['created_for'];
if($record_hours['entry_date'] === $temp_date_element) {
if ($record_hours['category_id'] === '1') {
$data_ar[$temp_date_element]['time_1'] = $worked_hours;
} else {
$data_ar[$temp_date_element]['time_1'] = '0';
}
if ($record_hours['category_id'] === '2') {
$data_ar[$temp_date_element]['time_2'] = $worked_hours;
} else {
$data_ar[$temp_date_element]['time_2'] = '0';
}
if ($record_hours['category_id'] === '3') {
$data_ar[$temp_date_element]['time_3'] = $worked_hours;
} else {
$data_ar[$temp_date_element]['time_3'] = '0';
}
} else {
if ($record_hours['category_id'] !== '1') {
$data_ar[$temp_date_element]['time_1'] = '0';
}
if ($record_hours['category_id'] !== '2') {
$data_ar[$temp_date_element]['time_2'] = '0';
}
if ($record_hours['category_id'] !== '3') {
$data_ar[$temp_date_element]['time_3'] = '0';
}
}
self::$worked_hours_data[] = $data_ar;
}
В настоящее время temp_date_element создает 8 дат.4 имеют одинаковую дату.эти 4 должны слиться в одну дату со значением времени для каждого из них.
в настоящее время дата может иметь значение work_time для category_id 1, и эта же дата также может иметь значение work_time для category_id 2.
Я хочу объединить их вместе.
текущий цикл массива выглядит не так, как я хотел.Кажется, я не могу создать массив, который собирался создать.
массив, который я ожидал создать, был
[0]=>
array(1) {
["23-5-2019"]=>
array(4) {
["time_1"]=>
string(1) "1"
["created_for"]=>
string(3) "152"
["time_2"]=>
string(1) "2"
["time_3"]=>
string(1) "0"
}
}
С уважением,
B3nvo