JSON-使用PHP按日期求和值

时间:2019-04-08 17:01:16

标签: php json

我正在用php和json创建一个简单的脚本,但是要按日期生成多个值的和有一些困难。 我希望每个月总计“导入”和“导出”。

这是我要打印的:

array (
  'Date'   => '2019-03',
  'Import' => 1000,
  'Export' => 250,
)
array (
  'Date'   => '2019-04',
  'Import' => 100,
  'Export' => 600,
)

我的json:

[
  {
    "Date": "2019-03",
    "Import": "200",
    "Export": "50"
  },
  {
    "Date": "2019-03",
    "Import": "800",
    "Export": "200"
  },
  {
    "Date": "2019-04",
    "Import": "100",
    "Export": "600"
  }
]

这是我的脚本php:

$url = dirname(__DIR__  ) . '/admin/json/all.json';
$json = file_get_contents($url);
$array_origin = json_decode($json, TRUE);

$stack=array(); 
foreach ($array_origin as $index => $array_part) {
  $stack[$array_part['Date']] =array_key_exists($array_part['Date'],$stack)?$stack[$array_part['Date']]+$array_part['Import']:$array_part['Import'];
}

echo '<pre>' . var_export($stack, true) . '</pre>';

但是,使用此脚本,我只能对“导入”求和,但我也希望对“导出”求和。

因此,我正在寻求您的帮助。 感谢您的帮助。

先谢谢了。 干杯

1 个答案:

答案 0 :(得分:2)

您需要将ImportExport键添加到结果数组。我试图缩短它,并使用了isset

foreach ($array_origin as $v) {
    $stack[$v['Date']]['Import'] = isset($v['Date']) ? $stack[$v['Date']]['Import'] + $v['Import'] : $v['Import'];
    $stack[$v['Date']]['Export'] = isset($v['Date']) ? $stack[$v['Date']]['Export'] + $v['Export'] : $v['Export'];
}