Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

130
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda