0

I want to create multidimensional array based on key.

Below is my original array.

Original Array.

Array
(
    [13] => Array
        (
            [member_id] => 13
            [parent_id] => 0
        )

    [14] => Array
        (
            [member_id] => 14
            [parent_id] => 13
        )

    [15] => Array
        (
            [member_id] => 15
            [parent_id] => 14
        )

)

Note : Provided Array is static but it is dynamic.

Required Array

Array
(
    [13] => Array
        (
            [member_id] => 13
            [parent_id] => 0
            [14] => Array
            (
                [member_id] => 14
                [parent_id] => 13
                [15] => Array
                (
                    [member_id] => 15
                    [parent_id] => 14
                )
            )
        )
)

Thanks.

Jaydeep Mor
  • 1,690
  • 3
  • 21
  • 39

1 Answers1

0

PHP

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['member_id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}

$tree = buildTree($output);

Output

Array
(
    [13] => Array
        (
            [member_id] => 13
            [parent_id] => 0
            [children] => Array
            (
                [0] => Array
                (
                    [member_id] => 14
                    [parent_id] => 13
                    [children] => Array
                    (
                        [0] => Array
                        (
                            [member_id] => 15
                            [parent_id] => 14
                        )
                    )
                )
            )
        )
)
Jaydeep Mor
  • 1,690
  • 3
  • 21
  • 39