Я хочу вычислить некоторые итоги на основе существующих многомерных массивов
Мой массив:
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» и поместите все значения сразу после того, как массив начнет с нового «GEOGRPAPHIE». Примерно так:
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
)
)