Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

129
Views
Node Tree break down as Array

is that possible to generate the array base one this node tree? That is the code that I have done. But I have no idea how to create 1,3,2 and 1,4 as an array. And I don't know how to make it more efficient. is that possible to generate the array base one this node tree? That is the code that I have done. But I have no idea how to create 1,3,2 and 1,4 as an array. And I don't know how to make it more efficient.

That is the array:

 array (
  'pole number 1' => 
  array (
    0 => 'pole number 1',
    1 => 'TRUE',
    'children' => 
    array (
      'pole number 3' => 
      array (
        0 => 'pole number 3',
        1 => 'FALSE',
        2 => 'pole number 1',
        'children' => 
        array (
          'pole number 2' => 
          array (
            0 => 'pole number 2',
            1 => 'FALSE',
            2 => 'pole number 3',
          ),
        ),
      ),
      'pole number 4' => 
      array (
        0 => 'pole number 4',
        1 => 'FALSE',
        2 => 'pole number 1',
      ),
    ),
  ),
  'pole number 5' => 
  array (
    0 => 'pole number 5',
    1 => 'TRUE',
    'children' => 
    array (
      'pole number 6' => 
      array (
        0 => 'pole number 6',
        1 => 'FALSE',
        2 => 'pole number 5',
        'children' => 
        array (
          'pole number 7' => 
          array (
            0 => 'pole number 7',
            1 => 'FALSE',
            2 => 'pole number 6',
          ),
        ),
      ),
      'pole number 8' => 
      array (
        0 => 'pole number 8',
        1 => 'FALSE',
        2 => 'pole number 5',
      ),
    ),
  ),
)
1
--3
---2
--4

Expected Output

[
 [1,3,2],
 [1,4]
]
foreach ($tree as $key => $value) {
    $result = traverseTree($value);
}

function traverseTree($tree = array())
{
    if ($tree[1] && !empty($tree['children'])) {
        // if no parent id than that is root
        $result[$tree[0]] = $tree[0];
        traverseTree($tree['children']);
    } else {
        foreach ($tree as $key => $node) {
            var_dump($node[1]);
            if ($node[1]) {
                $result[$node[2]][] = $node[0];
            }
        }
    }

    var_dump($result);
}
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Your recursion strategy seems to be ok but you need to push another recursion call to stack by passing the children array if it is set. Next is to loop over each individual result subarray returned from the recursion call and current key name to it as shown below.

<?php

function collectNodes($tree){
    $result = [];
    foreach($tree as $name => $details){
        if(isset($details['children'])){
            $sub_result = collectNodes($details['children']);
            foreach($sub_result as $sr){
                $sr = array_merge([$name],$sr);
                $result[] = $sr;
            }
        }else{
            $result[] = [$name];
        }
    }    
    return $result;
}

print_r(collectNodes($tree));

Demo: http://sandbox.onlinephpfunctions.com/code/bb826c6ce98976ce2b4c694946d79e765f4b6330

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!