src/Dates.php

Реализуйте функцию buildRange, которая переводит входные данные в удобный для построения графика формат.

На вход эта функция принимает массив данных. Каждая запись массива представляет из себя объект типа [ 'value' => 14, 'date' => '02.08.2018' ]. Например:

1
2
3
4
5
6
7
<?php

$data = [
  [ 'value' => 14, 'date' => '02.08.2018' ],
  [ 'value' => 43, 'date' => '03.08.2018' ],
  [ 'value' => 38, 'date' => '05.08.2018' ],
];

Вторым и третьим параметрами функция принимает даты (в форме строк типа 'YYYY-MM-DD') начала и конца периода:

1
2
3
4
<?php

$begin = '2018-08-01';
$end = '2018-08-06';

Диапазон дат задаёт размер выходного массива, который должна сгенерить реализуемая функция. Правила формирования итогового массива:

  • он заполняется записями по всем дням из диапазона begin - end
  • в него включаются только те записи из входного массива, даты которых попадают в диапазон
  • если во входном массиве нет данных для какого-то дня из диапазона, то в свойство value записи этого дня установить значение 0
1
2
3
4
5
6
7
8
9
10
<?php

$result = buildRange(data, beginDate, endDate);
// OUTPUT
// [ [ 'value' => 0, 'date' => '01.08.2018' ],
//   [ 'value' => 14, 'date' => '02.08.2018' ],
//   [ 'value' => 43, date => '03.08.2018' ],
//   [ 'value' => 0, 'date' => '04.08.2018' ],
//   [ 'value' => 38, 'date' => '05.08.2018' ],
//   [ 'value' => 0, 'date' => '06.08.2018' ] ]

Подсказки

  • Функции из библиотеки Collect, которые могут пригодиться: keyBy.
  • Функции из библиотеки Carbon, которые могут пригодиться: \Carbon\CarbonPeriod::create.
Успешных завершений: 85%

Последние код-ревью

Автор Дата обновления Версий
martipurpurpur 24 нояб., 18:49 1
ofelion 13 нояб., 19:34 1
kathappiness 12 нояб., 16:13 1
lubaro 03 нояб., 17:57 1
ivbakin 29 сент., 13:59 1