Мой набор данных: ![enter image description here](https://i.stack.imgur.com/K9CoU.png)
Я хочу организовать в следующем json формате:
data: {
'year' : 2014,
'year_data' : {
'month' : 'January',
'month_data' : {
'day' : {
'1' : 100,
'2' : 200,
'3' : 300,
'4' : 400,
}
}
}
}
Вот мой подход:
function sheetData($data, $sheet) {
echo "<pre>";
$years = ['2014', '2015', '2016', '2017', '2018'];
$months = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December'];
$x = 1;
$segment = 0;
$segment_end = 11;
$year_count = 0;
$calc_years = [];
$calc_months = [];
while($x <= $sheet['numRows']) {
$y = 3;
if ($segment == $segment_end) {
$calc_months[$segment] = $months[$segment];
$segment = 0;
$calc_years[$year_count] = $years[$year_count];
$year_count++;
} else {
$calc_months[$segment] = $months[$segment];
$segment++;
}
$col = 0;
while($y <= $sheet['numCols']) {
$cell = isset($sheet['cells'][$x][$y]) ? $sheet['cells'][$x][$y] : '';
$calc_days[$col] = $cell;
$y++;
$col++;
}
$x++;
}
$data_year = array();
$data_month = array();
$data_day = array();
$data_array = array();
$count = 0;
$count_years = count($calc_years);
$count_months = count($calc_months);
$count_days = count($calc_days);
for ($p=0; $p < $count_years ; $p++) {
$data_array[$p]['year'] = $calc_years[$p];
for ($q=0; $q < $count_months; $q++) {
$data_array[$p]['year_data'][$q]['month'] = $calc_months[$q];
for ($r=0; $r < $count_days; $r++) {
$data_array[$p]['year_data'][$q]['month']['day'][$r] = $calc_days[$r];
}
}
}
var_dump($data_array);
}
Я прочитал данные из таблицы и сегментировал их по годам, месяцам и дням в отдельных массивах и, наконец, попытался написать массив для заполнения нужного мне формата. Но я изо всех сил пытаюсь создать из этого вложенный массив. Пробовал несколькими способами, но без решения. Любая помощь?
Полный код ссылки: введите описание ссылки здесь
Пример: https://drive.google.com/open?id=1NDpd0-sEMn47JDfhMagAjRnr_MemZttA