--2 уровень 50
--2 уровень 50
----4 уровень 100
----4 уровень 100 ---3 уровень 200
----4 уровень 300
----4 уровень 300 ---3 уровень 600
--2 уровень 800
-1 уровень 900
как реализовать обход. выделенные уровни необходимо суммировать автоматом. остальне - инпуты.
для меня что выше написано филькина грамота. а задача то оказывается решается двумя строчками
в общем две строчки кода
- в ребенке $sumq[$id_parent] += значение;
- в родителе $sumq[$id_parent] += $sumq[ид_объекта];
Так ты б задачу как-то получше бы расписал. А то ни по описанию поста, ни по твоему ответу в итоге непонятно, что ты хотел получить и из каких исходных данных.
да на самом деле первоначально хотел идти сложным путем. создавть много массив на каждый уровень. но эт довольно плохая идея как оказалось. так что проще создавать массив по идишнику элемента в который складывается сумма потомков
Просто обходишь рекурсивно дерево, типа как в коде ниже. Я описал для объектов, ты можешь легко переделать под свои нужды в зависимости от того, в каком виде данные представлены. Ну и не очень понятно, что имелось в виду под "суммировать автоматом, остальное - инпуты".
function treeRec($tree, &$acc) {
foreach ($list as $k => $item) {
if (<твое условие>) $acc += $item -> value;
if (count($item -> children) > 0) treeRec($item -> children, $acc);
}
}
$result = 0;
treeRec($tree, $result);