I had to recursively generate a multidimensional array and found a way to do it here: Recursive function to generate multidimensional array from database result
However I now need to also count the amount of children every parent has and I don't know how will I adopt the function below to accomplish that?
function generateCorrectArray(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $key => $element) {
if ($element['parent'] == $parentId) {
$children = generateCorrectArray($elements, $element['category_id']);
if ($children) {
$element['children'] = $children;
}
$branch[$element['category_id']] = $element;
}
}
return $branch;
}
EDIT
Array i start with:
$someArray = array(
array(
"id"=> 1,
"name"=> "somename1",
"parent"=> 0,
"childrenCount" => 0,
"children" => 0
),
array(
"id"=> 53,
"name"=> "somename2",
"parent"=> 1,
"childrenCount" => 0,
"children" => 0
),
array(
"id"=> 921,
"name"=> "somename3",
"parent"=> 53,
"childrenCount" => 0,
"children" => 0
)
Current function Results
$someArray = array(
array(
"id"=> 1,
"name"=> "somename1",
"parent"=> 0,
"children" => array(
array(
"id"=> 53,
"name"=> "somename2",
"parent"=> 1,
"children" => array(
array(
"id"=> 921,
"name"=> "somename3",
"parent"=> 53,
"children" => array(
)
)
)
)
)
)
I would like it to also have a count for each of the nested children.
The goal
$someArray = array(
array(
"id"=> 1,
"name"=> "somename1",
"parent"=> 0,
"childrenCount"=> 2,
"children" => array(
array(
"id"=> 53,
"name"=> "somename2",
"parent"=> 1,
"childrenCount"=> 1,
"children" => array(
array(
"id"=> 921,
"name"=> "somename3",
"parent"=> 53,
"childrenCount"=> 0,
"children" => array(
)
)
)
)
)
)