【发布时间】:2019-09-30 05:15:58
【问题描述】:
我想根据现有的多维数组计算一些总数
我的数组:
Array
(
[0] => Array
(
[ORIGINE] => AL
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => QUINZE
)
[1] => Array
(
[ORIGINE] => SU
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => QUINZE
)
[2] => Array
(
[ORIGINE] => RE
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => MEMBRES
)
[3] => Array
(
[ORIGINE] => SL
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => MEMBRES
)
[4] => Array
(
[ORIGINE] => BE
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => EST
)
[5] => Array
(
[ORIGINE] => RP
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => EST
)
[6] => Array
(
[ORIGINE] => DF
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => TIERS
)
[7] => Array
(
[ORIGINE] => AR
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => TIERS
)
)
I tried something like this :
public function calculateTotals($datas)
{
$totals = [];
foreach ($datas as $data) {
$nextElement = next($data);
foreach ($data as $key => $value) {
if($data['GEOGRAPHIE'] == $nextElement['GEOGRAPHIE']) {
if(!in_array($key, ['ORIGINE', 'GEOGRAPHIE'])) {
$totals[$key] += $value;
}
} else {
}
}
}
return $datas;
}
我们的想法是基于前一个数组构建一个新数组 + 计算每个 GEOGRAFIE 的总数并将其推送到数组中。因此,计算除“ORIGINE”和“GEOGRAPHIE”之外的所有列的总和,并将所有值放在以新“GEOGRAPHIE”开头的数组之后。像这样:
Array
(
[0] => Array
(
[ORIGINE] => AL
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => QUINZE
)
[1] => Array
(
[ORIGINE] => SU
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => QUINZE
)
[2] => Array
(
[ORIGINE] => QUINZE
[t] => 2
[p] => 4
[e] => 6
[f] => 8
[GEOGRAPHIE] => QUINZE
)
[3] => Array
(
[ORIGINE] => RE
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => MEMBRES
)
[4] => Array
(
[ORIGINE] => SL
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => MEMBRES
)
[5] => Array
(
[ORIGINE] => MEMBRES
[t] => 2
[p] => 4
[e] => 6
[f] => 8
[GEOGRAPHIE] => MEMBRES
)
[5] => Array
(
[ORIGINE] => BE
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => EST
)
[6] => Array
(
[ORIGINE] => RP
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => EST
)
[7] => Array
(
[ORIGINE] => EST
[t] => 2
[p] => 4
[e] => 6
[f] => 8
[GEOGRAPHIE] => EST
)
[8] => Array
(
[ORIGINE] => DF
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => TIERS
)
[9] => Array
(
[ORIGINE] => AR
[t] => 1
[p] => 2
[e] => 3
[f] => 4
[GEOGRAPHIE] => TIERS
)
[10] => Array
(
[ORIGINE] => TIERS
[t] => 2
[p] => 4
[e] => 6
[f] => 8
[GEOGRAPHIE] => TIERS
)
)
【问题讨论】:
-
为什么是 2,3,6,8?应该是 2,4,6,8
-
@quickSwap 是的,抱歉,我会更新问题
-
请检查我的回答。如果需要任何帮助,请告诉我
标签: php arrays multidimensional-array php-7.1