PHP создает массив на основе дат и объединяет несколько строк - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь составить диаграмму с использованием 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...