I have a big problem (apparently so simple to solve) that I have been trying for more than 24 hours to create a function to turn the array into multidimensional with depth.
My array is
$array = array(
array("name" => "Root_1", "depth"=> "1"),
array("name" => "Children","depth"=> "2"),
array("name" => "Children", "depth"=> "2"),
array("name" => "Children", "depth"=> "2"),
array("name" => "Children","depth"=> "3"),
array("name" => "Children","depth"=> "3"),
array("name" => "Children","depth"=> "3"),
array("name" => "Root_2", "depth"=> "1"),
array("name" => "Children", "depth"=> "2"),
array("name" => "Children", "depth"=> "2"),
array("name" => "Children", "depth"=> "2")
)
And I want the output to be:
$array = array(
array("name" => "Root_1", "depth"=> "1", "children" => array(
array("name" => "Children", "depth"=> "2", "children" => array()),
array("name" => "Children", "depth"=> "2", "children" => array()),
array("name" => "Children", "depth"=> "2", "children" => array(
array("name" => "Children", "depth"=> "3", "children" => array()),
array("name" => "Children", "depth"=> "3", "children" => array()),
array("name" => "Children", "depth"=> "3", "children" => array())
)
)),
array("name" => "Root_2", "depth"=> "1", "children" => array(
array("name" => "Children", "depth"=> "2", "children" => array()),
array("name" => "Children", "depth"=> "2", "children" => array()),
array("name" => "Children", "depth"=> "2", "children" => array(
array("name" => "Children", "depth"=> "3", "children" => array()),
array("name" => "Children", "depth"=> "3", "children" => array()),
array("name" => "Children", "depth"=> "3", "children" => array())
)
)),
);
What I've tried:
<?php
function createArray($array, $depth) {
$result = array();
$item = array();
if(isset($array["depth"])) {
if(intval($array["depth"]) >= $depth) {
array_push($result, $array);
}
} else {
foreach($array as $value) {
$depthToInt = intval($value["depth"]);
if($depthToInt === $depth) {
array_push($result, $value);
$item = $value;
} else {
$item["children"] = createArray($value, $item["depth"]);
}
}
}
return $result;
}
depth => 2are children ofRoot_1andRoot_2. But how do you differentiate which "Children of depth 2" are assigned the "Children of depth 3" ?