So I got this:
$tree = [
array(
'name' => 'One1',
),
array(
'name' => 'One2',
),
array(
'name' => 'One3',
),
array(
'name' => 'One4',
'children' => [
array(
'name' => 'Two1',
),
array(
'name' => 'Two2',
'children' => [
array(
'name' => 'Three1',
),
],
),
array(
'name' => 'Two3',
),
]
),
array(
'name' => 'One5',
),
];
And I'm looking for a way to have this output (recursively):
- One1
- One2
- One3
- One4 › Two1
- One4 › Two2 › Three1
- One4 › Two3
- One5
As far as I go I have this function
function getValuesPaths(array $tree, $glue = ' > ') {
$branches = array();
foreach ($tree as &$item) {
$piece = $item['name'];
if (array_key_exists('children', $item)) {
if (count($item['children'])>1) {
$leafs = self::getValuesPaths($item['children']);
foreach ($leafs as $item) {
$branches[] = $piece . $glue . $item;
}
}
} else {
$branches[] = $piece;
}
}
return $branches;
}
This output the following paths:
- One1
- One2
- One3
- One4 > Two1
- One4 > Two3
- One5
It wasn't supposed to find the One4 > Two2 > Three1
?