我正在尝试使用PHP和JSON文件进行一些数学运算。基本上,我有一个数组,其中包含具有价格和出售日期的项目。 我想做的是将共享同一日期的所有商品的价格相加。例如,将对今天售出的所有商品的价格进行汇总,并且代码会回显最终的价格。
我已经从JSON文件中成功检索了所需的信息,并将价格和日期放入数组中。我可以从foreach循环外部调用数组。
在下面的代码中,我一直在尝试一种解决方法,以使其正常运行,但是可能需要创建一个数组,其中包含x和y年之间的所有日期,这可能不是最佳选择。
我的JSON看起来像这样(格式不正确)
Array
[0]
Price = 10
Date = 1-1-2019
[1]
Price = 10
Date = 2-1-2019
[2]
Price = 10
Date = 2-1-2019
[3]
Price = 10
Date = 1-1-2019
这是我的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]
?>
我希望能够以以下格式回显列表。该日期必须是最早的日期到最近的日期,否则我的图表将无法正常工作。
[date, price], [date, price], [date, price]...
我还需要将日期格式从1-1-2019(d-m-y)转换为2000、8、5(y-m-d),以便在我的Google API图表中使用。我想我可以通过使用$ data = explode( something )并使用$ data [0] ...检索d-m-y来做到这一点。
非常感谢您的光临!
答案 0 :(得分:1)
代替此:
$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()
以将它们按顺序排列,然后在数组上循环并回显您的值。