<?php "id" => 1, "name" => "Europe", "path" => "/" ), "id" => 2, "name" => "Germany", "path" => "/1/" ), "id" => 3, "name" => "France", "path" => "/1/" ), "id" => 4, "name" => "Berlin", "path" => "/1/2/" ), "id" => 5, "name" => "Munich", "path" => "/1/2/" ), "id" => 6, "name" => "Asia", "path" => "/" ), "id" => 7, "name" => "China", "path" => "/6/" ), "id" => 8, "name" => "Bangladesh", "path" => "/6/" ), "id" => 9, "name" => "Beijing", "path" => "/6/7/" ), "id" => 10, "name" => "Dhaka", "path" => "/6/8/" ), "id" => 11, "name" => "Berlin - District 1", "path" => "/1/2/4/" ), "id" => 12, "name" => "Berlin - District 2", "path" => "/1/2/4/" ), "id" => 13, "name" => "Berlin - Sub-District 1", "path" => "/1/2/4/11/" ), "id" => 14, "name" => "Berlin - Sub-Sub-District 1", "path" => "/1/2/4/11/13/" ), ); function pathToTree($array){ foreach($array AS $item) { $current = &$tree; foreach($pathIds AS $id) { $current = &$current["childs"][$id]; if($id == $item["id"]) { $current = $item; } } } return $tree; }
Standard input is empty
Array
(
[childs] => Array
(
[1] => Array
(
[id] => 1
[name] => Europe
[path] => /
[childs] => Array
(
[2] => Array
(
[id] => 2
[name] => Germany
[path] => /1/
[childs] => Array
(
[4] => Array
(
[id] => 4
[name] => Berlin
[path] => /1/2/
[childs] => Array
(
[11] => Array
(
[id] => 11
[name] => Berlin - District 1
[path] => /1/2/4/
[childs] => Array
(
[13] => Array
(
[id] => 13
[name] => Berlin - Sub-District 1
[path] => /1/2/4/11/
[childs] => Array
(
[14] => Array
(
[id] => 14
[name] => Berlin - Sub-Sub-District 1
[path] => /1/2/4/11/13/
)
)
)
)
)
[12] => Array
(
[id] => 12
[name] => Berlin - District 2
[path] => /1/2/4/
)
)
)
[5] => Array
(
[id] => 5
[name] => Munich
[path] => /1/2/
)
)
)
[3] => Array
(
[id] => 3
[name] => France
[path] => /1/
)
)
)
[6] => Array
(
[id] => 6
[name] => Asia
[path] => /
[childs] => Array
(
[7] => Array
(
[id] => 7
[name] => China
[path] => /6/
[childs] => Array
(
[9] => Array
(
[id] => 9
[name] => Beijing
[path] => /6/7/
)
)
)
[8] => Array
(
[id] => 8
[name] => Bangladesh
[path] => /6/
[childs] => Array
(
[10] => Array
(
[id] => 10
[name] => Dhaka
[path] => /6/8/
)
)
)
)
)
)
)