Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Obtener el valor de un elemento del padre en un arreglo

Estas en el tema de Obtener el valor de un elemento del padre en un arreglo en el foro de PHP en Foros del Web. Si tengo un arreglo tipo jerarquico de padre, hijos, nietos, biznietos, etc., cómo obtengo el valor de un elemento del padre, por ejemplo, realizo un ...
  #1 (permalink)  
Antiguo 29/08/2015, 14:23
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 3
Obtener el valor de un elemento del padre en un arreglo

Si tengo un arreglo tipo jerarquico de padre, hijos, nietos, biznietos, etc., cómo obtengo el valor de un elemento del padre, por ejemplo, realizo un iteracion, y en un elemento nuevo en cada hijo, nietos y biznietos le asigno el mismo valor del elemento de su padre:

Código:
[padre] => array(
   [id] => 20,
   [parent_id] =>2, //<<< este el elemento padre que quiero obtener
   [hijos] => array(
       [hijo 1] => array(
          [id] => 21,
          [parent_id] => 20,
          [categoria] => 2, //<<<< aqui asigno el valor del elemento padre
          [hijos] => array(
              [nieto 1] => array(
                 [id] => 21,
                 [parent_id] => 20,
                 [categoria] => 2, //<<<< aqui tambien asigno el valor del elemento del abuelo
              )
         )
     )
) // asi sucesivamente
A ver si alguien me puede ayudar.

Saludos.
  #2 (permalink)  
Antiguo 29/08/2015, 16:05
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 3
Respuesta: Obtener el valor de un elemento del padre en un arreglo

Hasta ahora tengo la siguiente función:

Código PHP:
Ver original
  1. function assignCategory($array, $cat = 0)
  2. {
  3.     foreach($array as $key => $subarray)
  4.     {
  5.         $cat = $array[$key]['parent_id'];
  6.         $array[$key]['cat'] = $cat;
  7.         $array[$key]['children'] = assignCategory($subarray['children'], $cat = $array[$key]['cat']);
  8.     }
  9.     return $array;
  10. }

pero no funciona como debe, porque el elemento cat de los hijos me asigna el parent_id del mismo hijo en vez del padre. cómo hago para que asuma el valor de su padre y no del mismo hijo?.
  #3 (permalink)  
Antiguo 29/08/2015, 16:21
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 3
Respuesta: Obtener el valor de un elemento del padre en un arreglo

Me respondo:

Le agregué un elemento al arreglo llamado type que indica si es root(padre) o children(hijo) y modifique la funcion asi:

Código PHP:
Ver original
  1. function assignCategory($array, $cat = 0)
  2. {
  3.     foreach($array as $key => $subarray)
  4.     {
  5.         $cat = ($array[$key]['type'] == 'root') ? $array[$key]['parent_id'] : $cat;
  6.         $array[$key]['cat'] = $cat;
  7.         $array[$key]['children'] = assignCategory($subarray['children'], $cat);
  8.     }
  9.     return $array;
  10. }

hasta ahora funciona bien, no sé hasta que nivel jerarquico llegaria, pero por el momento funciona como esperaba.

Saludos.

Etiquetas: arreglo, elemento, padre, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:14.