[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рекурсивно присвоить сумму
jokpok
Всем доброй ночи!

Вроде бы простая задача, но спустя тяжелый рабочий день, не могу понять (голова не варит, а задачу закрыть надо) что не так в данном коде:

function setCounts($el) {
$count = 0;
foreach($el as $k => $v) {
if(isset($v['categories'])) {
$v['product_count'] += setCounts($v['categories']);
}
$count += $v['product_count'];
print_r($v);
}

return $count;
}


Должно происходить вот что:
Есть дерево категорий вида


$tree = [
"name" => "Cat1",
"categories" => [ "name" => "subCat1", "categories" => [...] ]
]



Некоторым подкатегориям n-ого уровня вложенности присвоен параметр product_count (количество товаров в данной категории). Необходимо всем родительским категориям присвоить такой же параметр, равный сумме этих параметров в дочерних категориях, естественно рекурсивно, например должно получится вот что:

$need_tree = [
"name" => "Cat1",
"product_count" => 15, //получен из суммы дочерних категорий
"categories" => [
"name" => "subCat1",
"product_count" => 15, //получен из суммы дочерних категорий
"categories" => [
"name" => "subSubCat1",
"product_count" => 5 //присвоен изначально
],
[

"name" => "subSubCat2",
"product_count" => 10 //присвоен изначально
],
]
]



Уверен, что в моем коде есть какой-то глупый недочет, но вот уже никак не соображу...
Надеюсь на вашу помощь.

Спасибо за внимание! :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.