PHP:从文件中获取JSON数据,处理数据并保存到新的JSON文件



我已经为一个问题坐了好几天了,但我找不到一个有效的解决方案。其实我也不懂PHP。

该项目旨在计算不同地区每天的Covid-19发病率(7天发病率)。

数据采用以下JSON格式(嵌套):

[
{
"Datum": "2021-02-06 09:13",
"Staates": [
{
"Cases": 5557,
"Death": 120,
"New_Cases": 60,
"Region": "Region_A"
},
{
"Cases": 8021,
"Death": 113,
"New_Cases": 97,
"Region": "Region_B"
},
{
"Cases": 4675,
"Death": 73,
"New_Cases": 98,
"Region": "Region_C"
},
{
"Cases": 44773,
"Death": 1584,
"New_Cases": 407,
"Region": "Region_D"
},
{
"Cases": 6097,
"Death": 70,
"New_Cases": 32,
"Region": "Region_E"
},
{
"Cases": 6439,
"Death": 244,
"New_Cases": 81,
"Region": "Region_T"
},
{
"Cases": 5983,
"Death": 164,
"New_Cases": 87,
"Region": "Region_U"
},
{
"Cases": 8980,
"Death": 270,
"New_Cases": 71,
"Region": "Region_F"
},
{
"Cases": 2696,
"Death": 92,
"New_Cases": 40,
"Region": "Region_G"
},
{
"Cases": 10350,
"Death": 151,
"New_Cases": 123,
"Region": "Region_H"
},
{
"Cases": 15560,
"Death": 636,
"New_Cases": 108,
"Region": "Region_I"
},
{
"Cases": 2756,
"Death": 80,
"New_Cases": 23,
"Region": "Region_J"
},
{
"Cases": 17213,
"Death": 232,
"New_Cases": 236,
"Region": "Region_K"
},
{
"Cases": 5639,
"Death": 88,
"New_Cases": 78,
"Region": "Region_L"
},
{
"Cases": 8900,
"Death": 112,
"New_Cases": 135,
"Region": "Region_M"
},
{
"Cases": 29301,
"Death": 404,
"New_Cases": 577,
"Region": "Region_N"
},
{
"Cases": 14635,
"Death": 356,
"New_Cases": 110,
"Region": "Region_O"
},
{
"Cases": 3671,
"Death": 73,
"New_Cases": 16,
"Region": "Region_P"
},
{
"Cases": 7374,
"Death": 148,
"New_Cases": 73,
"Region": "Region_Q"
},
{
"Cases": 7762,
"Death": 124,
"New_Cases": 142,
"Region": "Region_R"
},
{
"Cases": 18744,
"Death": 10,
"New_Cases": 310,
"Region": "Region_S "
}
]
},
{
"Datum": "2021-02-05 09:12",
"Staates": [
{
"Cases": 5545,
"Death": 119,
"New_Cases": 62,
"Region": "Region_A"
},
{
"Cases": 8006,
"Death": 113,
"New_Cases": 106,
"Region": "Region_B"
},
{
"Cases": 4652,
"Death": 73,
"New_Cases": 92,
"Region": "Region_C"
},
{
"Cases": 44720,
"Death": 1578,
"New_Cases": 426,
"Region": "Region_D"
},
{
"Cases": 6088,
"Death": 69,
"New_Cases": 27,
"Region": "Region_E"
},
{
"Cases": 6424,
"Death": 243,
"New_Cases": 79,
"Region": "Region_T"
},
{
"Cases": 5965,
"Death": 163,
"New_Cases": 85,
"Region": "Region_U"
},
{
"Cases": 8969,
"Death": 270,
"New_Cases": 70,
"Region": "Region_F"
},
{
"Cases": 2692,
"Death": 91,
"New_Cases": 41,
"Region": "Region_G"
},
{
"Cases": 10336,
"Death": 150,
"New_Cases": 126,
"Region": "Region_H"
},
{
"Cases": 15547,
"Death": 635,
"New_Cases": 113,
"Region": "Region_I"
},
{
"Cases": 2754,
"Death": 79,
"New_Cases": 24,
"Region": "Region_J"
},
{
"Cases": 17189,
"Death": 231,
"New_Cases": 241,
"Region": "Region_K"
},
{
"Cases": 5625,
"Death": 88,
"New_Cases": 82,
"Region": "Region_L"
},
{
"Cases": 8882,
"Death": 112,
"New_Cases": 146,
"Region": "Region_M"
},
{
"Cases": 29217,
"Death": 401,
"New_Cases": 549,
"Region": "Region_N"
},
{
"Cases": 14617,
"Death": 356,
"New_Cases": 120,
"Region": "Region_O"
},
{
"Cases": 3668,
"Death": 71,
"New_Cases": 18,
"Region": "Region_P"
},
{
"Cases": 7358,
"Death": 148,
"New_Cases": 66,
"Region": "Region_Q"
},
{
"Cases": 7743,
"Death": 122,
"New_Cases": 149,
"Region": "Region_R"
},
{
"Cases": 18705,
"Death": 10,
"New_Cases": 333,
"Region": "Region_S "
}
]
},
{
"Datum": "2021-02-04 09:20",
"Staates": [
{
"Cases": 5537,
"Death": 118,
"New_Cases": 68,
"Region": "Region_A"
},
{
"Cases": 7987,
"Death": 112,
"New_Cases": 110,
"Region": "Region_B"
},
{
"Cases": 4636,
"Death": 73,
"New_Cases": 106,
"Region": "Region_C"
},
{
"Cases": 44637,
"Death": 1575,
"New_Cases": 434,
"Region": "Region_D"
},
{
"Cases": 6082,
"Death": 69,
"New_Cases": 29,
"Region": "Region_E"
},
{
"Cases": 6416,
"Death": 243,
"New_Cases": 83,
"Region": "Region_T"
},
{
"Cases": 5956,
"Death": 163,
"New_Cases": 86,
"Region": "Region_U"
},
{
"Cases": 8961,
"Death": 268,
"New_Cases": 75,
"Region": "Region_F"
},
{
"Cases": 2687,
"Death": 91,
"New_Cases": 45,
"Region": "Region_G"
},
{
"Cases": 10314,
"Death": 150,
"New_Cases": 130,
"Region": "Region_H"
},
{
"Cases": 15529,
"Death": 629,
"New_Cases": 113,
"Region": "Region_I"
},
{
"Cases": 2747,
"Death": 79,
"New_Cases": 23,
"Region": "Region_J"
},
{
"Cases": 17147,
"Death": 230,
"New_Cases": 250,
"Region": "Region_K"
},
{
"Cases": 5618,
"Death": 88,
"New_Cases": 95,
"Region": "Region_L"
},
{
"Cases": 8869,
"Death": 112,
"New_Cases": 166,
"Region": "Region_M"
},
{
"Cases": 29064,
"Death": 401,
"New_Cases": 476,
"Region": "Region_N"
},
{
"Cases": 14588,
"Death": 356,
"New_Cases": 121,
"Region": "Region_O"
},
{
"Cases": 3665,
"Death": 71,
"New_Cases": 24,
"Region": "Region_P"
},
{
"Cases": 7340,
"Death": 146,
"New_Cases": 57,
"Region": "Region_Q"
},
{
"Cases": 7708,
"Death": 122,
"New_Cases": 144,
"Region": "Region_R"
},
{
"Cases": 18665,
"Death": 10,
"New_Cases": 339,
"Region": "Region_S "
}
]
},
{
"Datum": "2021-02-03 09:44",
"Staates": [
{
"Cases": 5527,
"Death": 117,
"New_Cases": 66,
"Region": "Region_A"
},
{
"Cases": 7966,
"Death": 112,
"New_Cases": 108,
"Region": "Region_B"
},
{
"Cases": 4607,
"Death": 73,
"New_Cases": 93,
"Region": "Region_C"
},
{
"Cases": 44555,
"Death": 1570,
"New_Cases": 407,
"Region": "Region_D"
},
{
"Cases": 6074,
"Death": 69,
"New_Cases": 31,
"Region": "Region_E"
},
{
"Cases": 6397,
"Death": 243,
"New_Cases": 73,
"Region": "Region_T"
},
{
"Cases": 5930,
"Death": 161,
"New_Cases": 68,
"Region": "Region_U"
},
{
"Cases": 8953,
"Death": 268,
"New_Cases": 73,
"Region": "Region_F"
},
{
"Cases": 2681,
"Death": 91,
"New_Cases": 42,
"Region": "Region_G"
},
{
"Cases": 10275,
"Death": 149,
"New_Cases": 105,
"Region": "Region_H"
},
{
"Cases": 15511,
"Death": 625,
"New_Cases": 111,
"Region": "Region_I"
},
{
"Cases": 2745,
"Death": 78,
"New_Cases": 23,
"Region": "Region_J"
},
{
"Cases": 17093,
"Death": 229,
"New_Cases": 234,
"Region": "Region_K"
},
{
"Cases": 5597,
"Death": 87,
"New_Cases": 90,
"Region": "Region_L"
},
{
"Cases": 8843,
"Death": 112,
"New_Cases": 190,
"Region": "Region_M"
},
{
"Cases": 29042,
"Death": 399,
"New_Cases": 514,
"Region": "Region_N"
},
{
"Cases": 14568,
"Death": 356,
"New_Cases": 131,
"Region": "Region_O"
},
{
"Cases": 3659,
"Death": 71,
"New_Cases": 26,
"Region": "Region_P"
},
{
"Cases": 7320,
"Death": 146,
"New_Cases": 52,
"Region": "Region_Q"
},
{
"Cases": 7666,
"Death": 122,
"New_Cases": 130,
"Region": "Region_R"
},
{
"Cases": 18628,
"Death": 10,
"New_Cases": 359,
"Region": "Region_S "
}
]
},
{
"Datum": "2021-02-02 09:29",
"Staates": [
{
"Cases": 5505,
"Death": 117,
"New_Cases": 55,
"Region": "Region_A"
},
{
"Cases": 7931,
"Death": 112,
"New_Cases": 91,
"Region": "Region_B"
},
{
"Cases": 4596,
"Death": 72,
"New_Cases": 92,
"Region": "Region_C"
},
{
"Cases": 44451,
"Death": 1564,
"New_Cases": 350,
"Region": "Region_D"
},
{
"Cases": 6066,
"Death": 69,
"New_Cases": 27,
"Region": "Region_E"
},
{
"Cases": 6379,
"Death": 243,
"New_Cases": 75,
"Region": "Region_T"
},
{
"Cases": 5912,
"Death": 160,
"New_Cases": 59,
"Region": "Region_U"
},
{
"Cases": 8934,
"Death": 266,
"New_Cases": 59,
"Region": "Region_F"
},
{
"Cases": 2668,
"Death": 91,
"New_Cases": 32,
"Region": "Region_G"
},
{
"Cases": 10244,
"Death": 148,
"New_Cases": 83,
"Region": "Region_H"
},
{
"Cases": 15477,
"Death": 623,
"New_Cases": 83,
"Region": "Region_I"
},
{
"Cases": 2740,
"Death": 77,
"New_Cases": 20,
"Region": "Region_J"
},
{
"Cases": 17053,
"Death": 229,
"New_Cases": 211,
"Region": "Region_K"
},
{
"Cases": 5580,
"Death": 87,
"New_Cases": 82,
"Region": "Region_L"
},
{
"Cases": 8821,
"Death": 112,
"New_Cases": 190,
"Region": "Region_M"
},
{
"Cases": 28886,
"Death": 397,
"New_Cases": 407,
"Region": "Region_N"
},
{
"Cases": 14541,
"Death": 356,
"New_Cases": 126,
"Region": "Region_O"
},
{
"Cases": 3659,
"Death": 70,
"New_Cases": 29,
"Region": "Region_P"
},
{
"Cases": 7297,
"Death": 146,
"New_Cases": 43,
"Region": "Region_Q"
},
{
"Cases": 7628,
"Death": 122,
"New_Cases": 104,
"Region": "Region_R"
},
{
"Cases": 18539,
"Death": 10,
"New_Cases": 318,
"Region": "Region_S "
}
]
},
{
"Datum": "2021-02-01 09:30",
"Staates": [
{
"Cases": 5500,
"Death": 117,
"New_Cases": 63,
"Region": "Region_A"
},
{
"Cases": 7925,
"Death": 111,
"New_Cases": 100,
"Region": "Region_B"
},
{
"Cases": 4577,
"Death": 72,
"New_Cases": 82,
"Region": "Region_C"
},
{
"Cases": 44379,
"Death": 1557,
"New_Cases": 326,
"Region": "Region_D"
},
{
"Cases": 6059,
"Death": 69,
"New_Cases": 24,
"Region": "Region_E"
},
{
"Cases": 6372,
"Death": 243,
"New_Cases": 82,
"Region": "Region_T"
},
{
"Cases": 5899,
"Death": 160,
"New_Cases": 60,
"Region": "Region_U"
},
{
"Cases": 8926,
"Death": 265,
"New_Cases": 60,
"Region": "Region_F"
},
{
"Cases": 2666,
"Death": 91,
"New_Cases": 32,
"Region": "Region_G"
},
{
"Cases": 10231,
"Death": 148,
"New_Cases": 80,
"Region": "Region_H"
},
{
"Cases": 15466,
"Death": 622,
"New_Cases": 87,
"Region": "Region_I"
},
{
"Cases": 2739,
"Death": 77,
"New_Cases": 28,
"Region": "Region_J"
},
{
"Cases": 17013,
"Death": 229,
"New_Cases": 200,
"Region": "Region_K"
},
{
"Cases": 5564,
"Death": 87,
"New_Cases": 81,
"Region": "Region_L"
},
{
"Cases": 8791,
"Death": 112,
"New_Cases": 188,
"Region": "Region_M"
},
{
"Cases": 28808,
"Death": 395,
"New_Cases": 400,
"Region": "Region_N"
},
{
"Cases": 14522,
"Death": 353,
"New_Cases": 122,
"Region": "Region_O"
},
{
"Cases": 3659,
"Death": 70,
"New_Cases": 45,
"Region": "Region_P"
},
{
"Cases": 7289,
"Death": 144,
"New_Cases": 39,
"Region": "Region_Q"
},
{
"Cases": 7626,
"Death": 122,
"New_Cases": 127,
"Region": "Region_R"
},
{
"Cases": 18509,
"Death": 10,
"New_Cases": 325,
"Region": "Region_S "
}
]
},
{
"Datum": "2021-01-31 09:12",
"Staates": [
{
"Cases": 5498,
"Death": 117,
"New_Cases": 77,
"Region": "Region_A"
},
{
"Cases": 7918,
"Death": 109,
"New_Cases": 120,
"Region": "Region_B"
},
{
"Cases": 4574,
"Death": 72,
"New_Cases": 92,
"Region": "Region_C"
},
{
"Cases": 44365,
"Death": 1545,
"New_Cases": 374,
"Region": "Region_D"
},
{
"Cases": 6059,
"Death": 69,
"New_Cases": 32,
"Region": "Region_E"
},
{
"Cases": 6372,
"Death": 241,
"New_Cases": 92,
"Region": "Region_T"
},
{
"Cases": 5899,
"Death": 159,
"New_Cases": 78,
"Region": "Region_U"
},
{
"Cases": 8924,
"Death": 263,
"New_Cases": 66,
"Region": "Region_F"
},
{
"Cases": 2666,
"Death": 91,
"New_Cases": 34,
"Region": "Region_G"
},
{
"Cases": 10231,
"Death": 147,
"New_Cases": 99,
"Region": "Region_H"
},
{
"Cases": 15456,
"Death": 622,
"New_Cases": 96,
"Region": "Region_I"
},
{
"Cases": 2739,
"Death": 77,
"New_Cases": 35,
"Region": "Region_J"
},
{
"Cases": 17011,
"Death": 227,
"New_Cases": 224,
"Region": "Region_K"
},
{
"Cases": 5561,
"Death": 87,
"New_Cases": 91,
"Region": "Region_L"
},
{
"Cases": 8788,
"Death": 112,
"New_Cases": 223,
"Region": "Region_M"
},
{
"Cases": 28792,
"Death": 391,
"New_Cases": 454,
"Region": "Region_N"
},
{
"Cases": 14513,
"Death": 352,
"New_Cases": 142,
"Region": "Region_O"
},
{
"Cases": 3656,
"Death": 70,
"New_Cases": 50,
"Region": "Region_P"
},
{
"Cases": 7283,
"Death": 144,
"New_Cases": 43,
"Region": "Region_Q"
},
{
"Cases": 7617,
"Death": 122,
"New_Cases": 137,
"Region": "Region_R"
},
{
"Cases": 18504,
"Death": 10,
"New_Cases": 364,
"Region": "Region_S "
}
]
},
{
"Datum": "2021-01-30 09:20",
"Staates": [
{
"Cases": 5483,
"Death": 114,
"New_Cases": 71,
"Region": "Region_A"
},
{
"Cases": 7901,
"Death": 108,
"New_Cases": 132,
"Region": "Region_B"
},
{
"Cases": 4564,
"Death": 72,
"New_Cases": 98,
"Region": "Region_C"
},
{
"Cases": 44318,
"Death": 1534,
"New_Cases": 390,
"Region": "Region_D"
},
{
"Cases": 6058,
"Death": 69,
"New_Cases": 38,
"Region": "Region_E"
},
{
"Cases": 6371,
"Death": 240,
"New_Cases": 110,
"Region": "Region_T"
},
{
"Cases": 5889,
"Death": 158,
"New_Cases": 80,
"Region": "Region_U"
},
{
"Cases": 8918,
"Death": 263,
"New_Cases": 63,
"Region": "Region_F"
},
{
"Cases": 2660,
"Death": 91,
"New_Cases": 36,
"Region": "Region_G"
},
{
"Cases": 10213,
"Death": 147,
"New_Cases": 106,
"Region": "Region_H"
},
{
"Cases": 15437,
"Death": 618,
"New_Cases": 90,
"Region": "Region_I"
},
{
"Cases": 2737,
"Death": 77,
"New_Cases": 34,
"Region": "Region_J"
},
{
"Cases": 16966,
"Death": 226,
"New_Cases": 223,
"Region": "Region_K"
},
{
"Cases": 5558,
"Death": 86,
"New_Cases": 111,
"Region": "Region_L"
},
{
"Cases": 8782,
"Death": 112,
"New_Cases": 256,
"Region": "Region_M"
},
{
"Cases": 28714,
"Death": 390,
"New_Cases": 445,
"Region": "Region_N"
},
{
"Cases": 14496,
"Death": 348,
"New_Cases": 140,
"Region": "Region_O"
},
{
"Cases": 3649,
"Death": 70,
"New_Cases": 48,
"Region": "Region_P"
},
{
"Cases": 7281,
"Death": 143,
"New_Cases": 47,
"Region": "Region_Q"
},
{
"Cases": 7610,
"Death": 122,
"New_Cases": 162,
"Region": "Region_R"
},
{
"Cases": 18485,
"Death": 10,
"New_Cases": 395,
"Region": "Region_S "
}
]
},
{
"Datum": "2021-01-29 08:50",
"Staates": [
{
"Cases": 5464,
"Death": 113,
"New_Cases": 65,
"Region": "Region_A"
},
{
"Cases": 7880,
"Death": 108,
"New_Cases": 130,
"Region": "Region_B"
},
{
"Cases": 4545,
"Death": 72,
"New_Cases": 95,
"Region": "Region_C"
},
{
"Cases": 44238,
"Death": 1522,
"New_Cases": 398,
"Region": "Region_D"
},
{
"Cases": 6050,
"Death": 68,
"New_Cases": 39,
"Region": "Region_E"
},
{
"Cases": 6352,
"Death": 239,
"New_Cases": 100,
"Region": "Region_T"
},
{
"Cases": 5875,
"Death": 158,
"New_Cases": 84,
"Region": "Region_U"
},
{
"Cases": 8910,
"Death": 263,
"New_Cases": 58,
"Region": "Region_F"
},
{
"Cases": 2658,
"Death": 91,
"New_Cases": 38,
"Region": "Region_G"
},
{
"Cases": 10200,
"Death": 146,
"New_Cases": 116,
"Region": "Region_H"
},
{
"Cases": 15412,
"Death": 613,
"New_Cases": 85,
"Region": "Region_I"
},
{
"Cases": 2727,
"Death": 76,
"New_Cases": 30,
"Region": "Region_J"
},
{
"Cases": 16918,
"Death": 225,
"New_Cases": 228,
"Region": "Region_K"
},
{
"Cases": 5531,
"Death": 86,
"New_Cases": 122,
"Region": "Region_L"
},
{
"Cases": 8751,
"Death": 112,
"New_Cases": 266,
"Region": "Region_M"
},
{
"Cases": 28642,
"Death": 389,
"New_Cases": 479,
"Region": "Region_N"
},
{
"Cases": 14464,
"Death": 347,
"New_Cases": 134,
"Region": "Region_O"
},
{
"Cases": 3645,
"Death": 70,
"New_Cases": 54,
"Region": "Region_P"
},
{
"Cases": 7268,
"Death": 143,
"New_Cases": 45,
"Region": "Region_Q"
},
{
"Cases": 7574,
"Death": 121,
"New_Cases": 147,
"Region": "Region_R"
},
{
"Cases": 18435,
"Death": 10,
"New_Cases": 404,
"Region": "Region_S "
}
]
},
{ ............ }
]

文件中的数据可以追溯到03/15/2020。

从这些数据中,我想计算每个地区在每个日期的7天发病率。

A地区(20121-02-06 7天发病情况):

近7天新增病例:

60 + 62 + 68 + 66 + 55 + 63 + 77= 451/7 = 64,42…(四舍五入至64.4)

数据现在应该保存在一个新的JSON文件中,如下所示。

[
{   "ID": 1,       // Unique ID for each region (e.g. ID 1 for Region_A). There are 21 regions.
"Datum": "2021-02-06 09:13",
"Staat": "Region_A",
"New_Cases": 60,
"Seven_Days_Incidenc": 64.4,
"Trend": "Down"   // Trend to the 7-day incidence of the previous day
},
{
"ID": 2,
"Datum": "2021-02-06 09:13",
"Staat": "Region_B",
"New_Cases": 97,
"Seven_Days_Incidenc": 104.6,
"Trend": "Up"
},
{
"ID": 3,
"Datum": "2021-02-06 09:13",
"Staat": "Region_C",
"New_Cases": 98,
"Seven_Days_Incidenc": 93.6,
"Trend": "Up"
},
{ ..... }
]

我可以从json文件中获得数据,但我不能得到计算工作,我不能得到正确的输出到一个新的json文件。

另外,我想为每个区域分配一个固定的ID。

下面的PHP代码我有(可能是完全错误的这种方法):
<?php
$jsonALL= file_get_contents('covid-19-all.json');
$jsonData = json_decode($jsonALL, TRUE);
$x = 1;
$length = count($jsonData);
$days = 7;
$countDays = 0;

$json_array_target  =   array();
$json_array_sieben_tage_inzidenz  =   array();
foreach($jsonData as $data) {
$countDays++;
$datum = $data['Datum'];
foreach($data['Staates'] as $key => $value) {

/* Testing
$json_array_target['Datum'] = $datum;
$json_array_target['Region'] = $value['Region'];
$json_array_target['Neue Faelle'] = $value['New_Cases'];
*/
$json_array_sieben_tage_inzidenz[] = ['ID' => $key + 1, 'Datum' => $datum, 'Region' => $value['Region'], 'Neue Faelle' => $value['New_Cases'], 'Summe' => $sum+= $value['New_Cases'] ];

}


if ($countDays == $days) break;

}

// View JSON Data on Screen
echo json_encode($json_array_sieben_tage_inzidenz, JSON_PRETTY_PRINT) . "<br>";
file_put_contents('covid-19-seven-days-incidenc-data.json', $json_array_sieben_tage_inzidenz);

?>
我希望有人能帮我解决这个问题。如果实现比我想象的更复杂,我也愿意为此付出一些代价,它应该不会失败。这是一个非营利性协会的项目,我是该协会的成员。

这是一个非常简化的版本,您可以根据您的需要扩展。

我使用OOP使它易于处理。

class Region implements JsonSerializable
{
public $id    = 0;
public $date  = '';
public $state = '';
private $values = [];
public function addValue(int $value)
{
$this->values[] = $value;
}
public function jsonSerialize()
{
return [
'id'                 => $this->id,
'state'              => $this->state,
'SevenDaysIncidence' => round($this->getSevenDaysIncidence(), 1),
'trend'              => $this->getTrend(),
'newCases'           => $this->values[0] ?? 0,
'date'               => $this->date,
];
}
private function getSevenDaysIncidence()
{
if (!count($this->values)) {
return 0;
}
return array_sum(array_slice($this->values, 0, 7)) / min(7, count($this->values));
}
private function getTrend()
{
if (count($this->values) < 2 || $this->values[0] > $this->values[1]) {
return 'Up';
}
if ($this->values[0] < $this->values[1]) {
return 'Down';
}
return 'Equal';
}
}
$input = json_decode(file_get_contents('covid-19-all.json'));
$regions = [];
$id      = 1;
foreach ($input as $data) {
foreach ($data->Staates as $state) {
if (!isset($regions[$state->Region])) {
$region                  = new Region();
$region->state           = $state->Region;
$region->id              = $id++;
$region->date            = $data->Datum;
$regions[$state->Region] = $region;
} else {
$region = $regions[$state->Region];
}
$region->addValue($state->New_Cases);
}
}
$output = json_encode(array_values($regions), JSON_PRETTY_PRINT);
echo $output;

你可以将内容保存到像

这样的文件中
file_put_contents('myJSON.json', $output);

输出如下所示

[
{
"id": 1,
"state": "Region_A",
"SevenDaysIncidence": 64.4,
"trend": "Down",
"newCases": 60,
"date": "2021-02-06 09:13"
},
{
"id": 2,
"state": "Region_B",
"SevenDaysIncidence": 104.6,
"trend": "Down",
"newCases": 97,
"date": "2021-02-06 09:13"
},
{
"id": 3,
"state": "Region_C",
"SevenDaysIncidence": 93.6,
"trend": "Up",
"newCases": 98,
"date": "2021-02-06 09:13"
},
{
"id": 4,
"state": "Region_D",
"SevenDaysIncidence": 389.1,
"trend": "Down",
"newCases": 407,
"date": "2021-02-06 09:13"
},
{
"id": 5,
"state": "Region_E",
"SevenDaysIncidence": 28.9,
"trend": "Up",
"newCases": 32,
"date": "2021-02-06 09:13"
},
{
"id": 6,
"state": "Region_T",
"SevenDaysIncidence": 80.7,
"trend": "Up",
"newCases": 81,
"date": "2021-02-06 09:13"
},
{
"id": 7,
"state": "Region_U",
"SevenDaysIncidence": 74.7,
"trend": "Up",
"newCases": 87,
"date": "2021-02-06 09:13"
},
{
"id": 8,
"state": "Region_F",
"SevenDaysIncidence": 67.7,
"trend": "Up",
"newCases": 71,
"date": "2021-02-06 09:13"
},
{
"id": 9,
"state": "Region_G",
"SevenDaysIncidence": 38,
"trend": "Down",
"newCases": 40,
"date": "2021-02-06 09:13"
},
{
"id": 10,
"state": "Region_H",
"SevenDaysIncidence": 106.6,
"trend": "Down",
"newCases": 123,
"date": "2021-02-06 09:13"
},
{
"id": 11,
"state": "Region_I",
"SevenDaysIncidence": 101.6,
"trend": "Down",
"newCases": 108,
"date": "2021-02-06 09:13"
},
{
"id": 12,
"state": "Region_J",
"SevenDaysIncidence": 25.1,
"trend": "Down",
"newCases": 23,
"date": "2021-02-06 09:13"
},
{
"id": 13,
"state": "Region_K",
"SevenDaysIncidence": 228,
"trend": "Down",
"newCases": 236,
"date": "2021-02-06 09:13"
},
{
"id": 14,
"state": "Region_L",
"SevenDaysIncidence": 85.6,
"trend": "Down",
"newCases": 78,
"date": "2021-02-06 09:13"
},
{
"id": 15,
"state": "Region_M",
"SevenDaysIncidence": 176.9,
"trend": "Down",
"newCases": 135,
"date": "2021-02-06 09:13"
},
{
"id": 16,
"state": "Region_N",
"SevenDaysIncidence": 482.4,
"trend": "Up",
"newCases": 577,
"date": "2021-02-06 09:13"
},
{
"id": 17,
"state": "Region_O",
"SevenDaysIncidence": 124.6,
"trend": "Down",
"newCases": 110,
"date": "2021-02-06 09:13"
},
{
"id": 18,
"state": "Region_P",
"SevenDaysIncidence": 29.7,
"trend": "Down",
"newCases": 16,
"date": "2021-02-06 09:13"
},
{
"id": 19,
"state": "Region_Q",
"SevenDaysIncidence": 53.3,
"trend": "Up",
"newCases": 73,
"date": "2021-02-06 09:13"
},
{
"id": 20,
"state": "Region_R",
"SevenDaysIncidence": 133.3,
"trend": "Down",
"newCases": 142,
"date": "2021-02-06 09:13"
},
{
"id": 21,
"state": "Region_S",
"SevenDaysIncidence": 335.4,
"trend": "Down",
"newCases": 310,
"date": "2021-02-06 09:13"
}
]

最新更新