我有一个多维数组,我试图在保持数组结构的同时对值求和。
该数组包含具有特定类型财务数据的data ['tags']的“财务”数组。每个“财务”的键在整个数组中都是相同的,例如,每个“财务”将具有“收入”和“费用”。
公司在整个数组中也是相同的,但需要在最终数组中返回
这是我正在使用的数据数组的确切格式:
$array =
[
[
"financials" => [
[
"data" => [
"tag" => "revenue",
],
"value" => 1,
],
[
"data" => [
"tag" => "expenses",
],
"value" => 10,
],
],
"company" => [
"id" => 1,
"name" => "company, inc",
],
],
[
"financials" => [
[
"data" => [
"tag" => "revenue",
],
"value" => 2,
],
[
"data" => [
"tag" => "expenses",
],
"value" => 20,
],
],
"company" => [
"id" => 1,
"name" => "company, inc",
],
],
];
我试图弄清楚如何对每个data ['tag']值的每个“值”求和,例如,如果计算上述数组,我想要得到的最终结果是:
[
"financials" => [
[
"data" => [
"tag" => "revenue",
],
"value" => 3,
],
[
"data" => [
"tag" => "expenses",
],
"value" => 30,
],
],
"company" => [
"id" => 1,
"name" => "company, inc",
],
],
保留原始数组结构,但已为每个data ['tag']值汇总了财务值。
任何帮助将不胜感激。
答案 0 :(得分:0)
此代码应执行以下操作:
$array = [
[
"financials" => [
[
"data" => [
"tag" => "revenue",
],
"value" => 1,
],
[
"data" => [
"tag" => "expenses",
],
"value" => 10,
],
],
"company" => [
"id" => 1,
"name" => "company, inc",
],
],
[
"company" => [
"id" => 1,
"name" => "company, inc",
],
"financials" => [
[
"data" => [
"tag" => "revenue",
],
"value" => 2,
],
[
"data" => [
"tag" => "expenses",
],
"value" => 20,
],
],
],
];
$company = $array[0]['company'];
$summedArray = $usedTags = [];
$summedArray['company'] = $company;
$summedArray['financials'] = [];
foreach ($array as $set) {
$data = $set['financials'];
foreach ($data as $dataSet) {
if (in_array($dataSet['data']['tag'], $usedTags) === false) {
$summedArray['financials'][] = [
"data" => [
"tag" => $dataSet['data']['tag']
],
"value" => $dataSet['value']
];
$usedTags[] = $dataSet['data']['tag'];
} else {
$summedArray['financials'][array_search($dataSet['data']['tag'], $usedTags)]['value'] += $dataSet['value'];
}
}
}
var_dump($summedArray);
希望对您有帮助