PHP根据日期创建一个数组并将多个行合并在一起

时间:2019-05-28 07:46:08

标签: php arrays date arraylist

我正在尝试使用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个应该合并为一个具有各自时间值的日期。

当前,一个日期的category_id 1可以有一个work_time,同一日期的category_id 2可以有一个work_time。

我想将它们合并在一起。

当前的数组循环似乎不是我想要的那样。我似乎无法创建要制作的数组。

我期望做的数组是

      [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

0 个答案:

没有答案