<?php
$arr = [
5 =>
[
"data_id" => "5",
"data_parent" => "4",
"data_level" => " ",
"data_prefix" => " ",
"data_title" => "Assets",
"data_link" => "0",
],
57 =>
[
"data_id" => "57",
"data_parent" => "5",
"data_level" => " ",
"data_prefix" => " ",
"data_title" => "Fixed Assets",
"data_link" => "0",
],
52 =>
[
"data_id" => "52",
"data_parent" => "5",
"data_level" => " ",
"data_prefix" => " ",
"data_title" => "Asset Two",
"data_link" => "1",
],
51 =>
[
"data_id" => "51",
"data_parent" => "5",
"data_level" => " ",
"data_prefix" => " ",
"data_title" => "Assset ONE",
"data_link" => "1",
],
48 =>
[
"data_id" => "48",
"data_parent" => "4",
"data_level" => " ",
"data_prefix" => " ",
"data_title" => "Expenses",
"data_link" => "0",
],
50 =>
[
"data_id" => "50",
"data_parent" => "48",
"data_level" => " ",
"data_prefix" => " ",
"data_title" => "Expense One",
"data_link" => "1",
],
49 =>
[
"data_id" => "49",
"data_parent" => "48",
"data_level" => " ",
"data_prefix" => " ",
"data_title" => "Expense One",
"data_link" => "1",
],
58 =>
[
"data_id" => "58",
"data_parent" => "57",
"data_level" => " ",
"data_prefix" => " ",
"data_title" => "Vehicles",
"data_link" => "1",
],
];
function buildTree(array $elements, $options = [
'parent_id_column_name' => 'parent_id',
'children_key_name' => 'children',
'id_column_name' => 'id',
], $parentId = 0) {
$branch = [];
foreach ($elements as $element) {
if ($element[$options['parent_id_column_name']] == $parentId) {
$children = buildTree($elements, $options, $element[$options['id_column_name']]);
if ($children) {
$element[$options['children_key_name']] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
// 4 as first parent is
$temp = buildTree($arr, [
'parent_id_column_name' => 'data_parent',
'children_key_name' => 'children',
'id_column_name' => 'data_id'], 4);
function printTree($tree)
{
if (!is_null($tree) && count($tree) > 0) {
echo '<ul>';
foreach ($tree as $node) {
// you can use whole $node here including all values of each node
echo '<li>' . $node['data_title'];
if (!empty($node['children'])) {
printTree($node['children']);
}
echo '</li>';
}
echo '</ul>';
}
}
printTree($temp);
- Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
- <ul><li>Assets<ul><li>Fixed Assets<ul><li>Vehicles</li></ul></li><li>Asset Two</li><li>Assset ONE</li></ul></li><li>Expenses<ul><li>Expense One</li><li>Expense One</li></ul></li></ul>
preferences:
176.02 ms | 403 KiB | 227 Q