У меня есть JSON-файл, подобный этому
{
"20":{
"0":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"1":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"2":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"3":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"4":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"5":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"6":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
}
},
"21":{
"0":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"1":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"2":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"3":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"4":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"5":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
},
"6":{
"period":[
{
"open": 350,
"close": 600
},
{
"open": 660,
"close": 900
}
]
}
}
, и у меня есть action
, который декодирует этот JSON
в массив и передает foreach
-es шаг за шагом, получаемэти данные, а затем сохранить их в базе данных.
Один парень сказал мне, что можно реорганизовать все эти действия, поэтому у меня не будет абсолютно (или приблизительного) какого-либо foreach или if.Также он сказал, что это называется representative/functional
программированием.
Итак, я нашел эту концепцию и все такое, но также не могу понять, как это сделать.Мой imperial
код:
$processingFile = file_get_contents(storage_path('hours.txt'));
$decodedFile = json_decode($processingFile, true);
$data = [];
$i = 0;
$batch = 10000;
foreach ($decodedFile as $business => $days) {
foreach ($days as $dayOfWeek => $periods) {
if (count($periods)) {
foreach ($periods['period'] as $key => $value) {
$i++;
$tmp = [
'business_id' => $business,
'day_of_week' => $dayOfWeek,
'open_periods_mins' => $value['open'],
'close_periods_mins' => $value['close'],
];
array_push($data, $tmp);
if($i === $batch) {
BusinessHour::insert($data);
$data = [];
$i = 0;
}
}
}
}
}
if( count($data) ) {
BusinessHour::insert($data);
}
Я не знаю, как parse
шаг за шагом и вырезать все это в функциях, используя Laravel Collections
или что-то еще ... declarative paradigm
.
Может ли кто-нибудь объяснить / переписать этот код в учебных целях?Спасибо!