src/Dates.php

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

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

<?php

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

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

<?php

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

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

  • он заполняется записями по всем дням из диапазона begin - end
  • в него включаются только те записи из входного массива, даты которых попадают в диапазон
  • если во входном массиве нет данных для какого-то дня из диапазона, то в свойство value записи этого дня установить значение 0
<?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.
Успешных завершений: 87%

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

Автор Дата обновления Версий
nekedio 25 июня, 14:54 1
mr_vstas 24 июня, 20:27 2
skvord89 21 июня, 09:42 3
user-20af0b8051e3da7f 02 июня, 18:52 1
nemial 01 июня, 12:29 1