Ich habe ein Array, mit einer Struktur ähnlich der unten. Wo es eine Hierarchie istSumme hierarchisches Array für jede Ebene von Array/Hierarchie
[2] => Array
(
[sumW] => 200.39
[child] => Array
(
[3] => Array
(
[sumW] => 300.00
)
[4] => Array
(
[sumW] => 100.28
[child] => Array
(
[5] => Array
(
[sumW] => 600
)
[6] => Array
(
[sumW] => 150
)
)
)
[7] => Array
(
[sumW] => 30.00
[child] => Array
(
[8] => Array
(
[sumW] => 100.00
)
)
)
)
)
```
Ich kann nicht herausfinden, wie auf jeder Ebene des Arrays jedes Array zu summieren. So dass jede Ebene die Summe von SICH SELBST UND die darunter liegenden Ebenen hat.
So zum Beispiel so etwas wie
[2] = [tot] => 1480.67
[3] = [tot] => 300.00
[4] = [tot] => 850.28
[5] = [tot] => 600.00
[6] = [tot] => 150.00
[7] = [tot] => 130.00
[8] = [tot] => 100.00
Und so weiter.
Das Array kann unendlich tief sein, dies zeigt nur 3 Ebenen, aber meine Hierarchie könnte tiefer als 3 Ebenen reichen.
Ich habe versucht, mit Array-Summe und mit der Einstellung Eltern/Kind-IDs in einem Array. Das Beste, was ich tun kann, ist die Werte für 2-> 3,4,7. Aber ich kann [2] keine Werte von [5] und [6] und darüber hinaus erhalten.
EDIT:
Hier ist ein Ansatz, den ich versucht. Ich habe parent_ids und category_ids aus meinen Rohdaten. Und das hat meine Summen 1 Level tief in jedem Level. Summiert aber nicht alles in der Hierarchie.
$tot=[];
$getSum = function ($array, $pid = null) use (&$getSum, &$tot) {
$rpt = new Report;
foreach ($array as $item) {
// This returns my database value for this category.
$sum = $rpt->getCategoryTotal($item->category_id);
if($item->parent_id == $pid) {
if(!isset($tot[$item->category_id])){
$tot[$item->category_id] = $sum;
}
if(isset($tot[$item->parent_id])){
$tot[$item->parent_id] += $sum;
}
$child = $getSum($item->children, $item->category_id);
}
}
return $sum;
};
$result = $getSum($myDbData);
return dd($tot);
haben Sie versucht, einen Code zu schreiben? – B4NZ41
@ B4NZ41 hinzugefügt einen Code, den ich ausprobiert habe – Nertskull