Как посчитать вложенный count для родителя?
Столкнулся с проблемой. Не знаю, как родителю присвоить "COUNT" потомков. То есть из такого массива
$array = [
100245 => [
'name' => 'Name 1',
'cnt' => 0
'child' => [
205245 => [
'name' => 'Name 3',
'cnt' => 0
'child' => [
100245 => [
'name' => 'Name 5',
'cnt' => 3
'child' => []
],
100277 => [
'name' => 'Name 6',
'cnt' => 7
'child' => []
],
]
]
]
],
100115 => [
'name' => 'Name 2',
'cnt' => 0
'child' => [
201245 => [
'name' => 'Name 4',
'cnt' => 0
'child' => []
]
]
]
];
Сделать такой
$array = [
100245 => [
'name' => 'Name 1',
'cnt' => 22
'child' => [
205245 => [
'name' => 'Name 3',
'cnt' => 22
'child' => [
100245 => [
'name' => 'Name 5',
'cnt' => 15
'child' => []
],
100277 => [
'name' => 'Name 6',
'cnt' => 7
'child' => []
],
]
]
]
],
100115 => [
'name' => 'Name 2',
'cnt' => 0
'child' => [
201245 => [
'name' => 'Name 4',
'cnt' => 0
'child' => []
]
]
]
];
Ответы (2 шт):
Автор решения: Meow
→ Ссылка
Черновой вариант решения
function countArrays(array $array): array
{
foreach ($array['child'] as $key => $childArray) {
$childArray = countArrays($childArray);
$array['child'][$key] = $childArray;
$array['cnt'] += $childArray['cnt'];
}
return $array;
}
foreach ($array as $key => $array2) {
$array[$key] = countArrays($array2);
}
Автор решения: Slava Rozhnev
→ Ссылка
Вы можете использовать рекурсивную функцию:
function recursiveCount(&$array) {
foreach ($array as $key => &$val) {
if ($val['child'] and is_array($val['child'])) {
$c = recursiveCount($val['child']);
$val['cnt'] = $c;
}
$count += $val['cnt'];
}
return $count;
}
recursiveCount($array);
print_r($array);
Рабочий код можно посмотреть здесь: PHPize.online