Php 如何对共享同一日期的变量求和?

Php 如何对共享同一日期的变量求和?,php,arrays,Php,Arrays,我正在尝试用PHP和JSON文件做一些数学运算。基本上,我有一个数组,其中包含有价格和销售日期的项目我试图做的是将共享同一日期的所有商品的价格相加。例如,今天售出的所有商品的价格将相加,代码将呼出最终价格 我已成功地从JSON文件中检索到所需信息,并将价格和日期放入数组中。我能够从foreach循环外部调用数组 在下面的代码中,我一直在尝试一种解决方法,以使其能够工作,但它可能需要创建一个包含x年和y年之间所有日期的数组,这可能不是最优的 我的JSON如下所示(格式不正确) 这是我的PHP代码

我正在尝试用PHP和JSON文件做一些数学运算。基本上,我有一个数组,其中包含有价格和销售日期的项目我试图做的是将共享同一日期的所有商品的价格相加。例如,今天售出的所有商品的价格将相加,代码将呼出最终价格

我已成功地从JSON文件中检索到所需信息,并将价格和日期放入数组中。我能够从foreach循环外部调用数组

在下面的代码中,我一直在尝试一种解决方法,以使其能够工作,但它可能需要创建一个包含x年和y年之间所有日期的数组,这可能不是最优的

我的JSON如下所示(格式不正确)

这是我的PHP代码

<?php
session_start();

$myFile = "../public/Objects.json";
$arr_data = array();

//Get data from existing json file

$jsondata = file_get_contents($myFile);

// converts json data into array

$arr_data = json_decode($jsondata, true);

// Fetch information in JSON

foreach($arr_data[objects] as $key=>$value){
 if ($arr_data[objects][$key][status] == "Vendu") {
  $reception_date = $arr_data[objects][$key][reception_date];
  $quantity = $arr_data[objects][$key][quantity];
  $price =  $arr_data[objects][$key][price];
  $batchprice = $price * $quantity;
  $total[$key] = array(
   "price" => $batchprice,
   "reception_date" => $reception_date
  );
  $date = "1-1-2019";
  if($total[$key][reception_date] == $date) {
   $totalprice += $total[$key][price];
  }
  else {
  }
 }
 else {
 }
}
echo "[$date, $totalprice]"; //Outputs [1-1-2019, 20]
?>
我还需要将日期格式从2019年1月1日(d-m-y)转换为2000年8月5日(y-m-d),以便在我的谷歌API图表中使用它。我想我可以通过使用$data=explode(某物)并使用$data[0]检索d-m-y来做到这一点

非常感谢您抽出时间

而不是这个:

  $total[$key] = array(
   "price" => $batchprice,
   "reception_date" => $reception_date
  );
  $date = "1-1-2019";
  if($total[$key][reception_date] == $date) {
   $totalprice += $total[$key][price];
  }
你可以这样做:

$total[$reception_date] = (isset($total[$reception_date]) ? $total[$reception_date] + $batchprice : $batchprice);
这将为您提供一个数组,其中包含日期键和当天总价的值


之后,对生成的数组执行一个
usort()
,将它们按顺序排列,然后在数组上循环并回显您的值。

您可以使用php的
date()
strotime()
函数获得所需的日期<代码>$newDate=date(“Y,m,d”,strottime($oldDate))您使用的格式。如果我理解正确,您希望在同一日期对所有价格求和吗?您发布的代码不起作用?@shn我发布的代码不是最优的,因为我必须在标记中写入我想要的日期,然后才能将其回显到我的网站。我正在寻找一个代码,可以让我在同一日期计算所有价格的总和,是的。@David,它工作得太棒了!谢谢你帮我约会!剩下的唯一一件事就是计算当天价格的方法。我真的非常感谢这个答案!我花了一整天的时间试图弄明白这一点,但我离这还差得远呢!非常感谢。
  $total[$key] = array(
   "price" => $batchprice,
   "reception_date" => $reception_date
  );
  $date = "1-1-2019";
  if($total[$key][reception_date] == $date) {
   $totalprice += $total[$key][price];
  }
$total[$reception_date] = (isset($total[$reception_date]) ? $total[$reception_date] + $batchprice : $batchprice);