PHP - array multidimensional desde DB (varios niveles)

 
Vista:
sin imagen de perfil

array multidimensional desde DB (varios niveles)

Publicado por Carlos (4 intervenciones) el 09/02/2017 06:54:56
Wenas,

Llevo ya más de una semana parado en este punto y no encuentro absolutamente nada que me pueda ayudar con mi problema.

Tengo un sistema de afiliados hecho por mi, los miembros se relacionan por un campo "sponsor" donde se introduce el usuario que lo introdujo.

Pues bien, todo funciona a la perfección hasta en el momento que quiero sacar todos los miembros en un array colocando cada referidos debajo de quien lo patrocinó.

Si hubiera una cantidad determinada de niveles, pues sería fácil ya que voy comprobando nivel por nivel y listo.

El problema es que no existe un nivel máximo con lo cual la estructura puede ser ilimitada y estoy tratando de buscar como loco una función que me permita añadir [ ] en el array por cada nivel que encuentre con algún referido.

Yo puedo sacar hasta $array[ ] [ ], pero si existe un tercer o más nivel, no tengo ni idea como añadirlo dinámicamente.

He encontrado ejemplos que lo hacen por refernecia:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function add_inner_array(&$array, $index) {
    if(isset($array[$index])) return true;
    else {
        $array[$index] = array();
        return true;
    }
}
 
$a = array(1,5,6);
$index = array();
$pass =& $index;
foreach($a as $k) {
    add_inner_array($pass, $k);
    $pass =& $pass[$k];
}

Pero no consigo implementarlo en mi ejemplo pues mi array resultante es asociativo y tiene una estructura parecida a la que comparto ahora:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$data = [
    [
        "UserName" => "user1",
        "Sponsor" => "",
        "Referrers" => [
            [
                "UserName" => "user2",
                "Sponsor" => "user1",
                "Referrers" => []
            ],
            [
                "UserName" => "user3",
                "Sponsor" => "user1",
                "Referrers" => [
                    [
                        "UserName" => "user2",
                        "Sponsor" => "user1",
                        "Referrers" => []
                    ]
                ]
            ],
            [
                "UserName" => "user3",
                "Sponsor" => "user1",
                "Referrers" => []
            ],
        ]
    ]
];
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

array multidimensional desde DB (varios niveles)

Publicado por xve (6935 intervenciones) el 09/02/2017 08:54:09
Hola Carlos, no se muy bien para que quieres esa estructura, ya que puede ser gigantesca según el numero de usuario que haya en dicho arbol...

lo que tu necesitas, es añadir un array en un valor del array... pero esto te aseguro que es un gran lio que no te llevara a ninguna parte...

exactamente que información quieres obtener?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

array multidimensional desde DB (varios niveles)

Publicado por Carlos (4 intervenciones) el 09/02/2017 13:28:08
Hola xve,

soy consciente de ello, la finalidad de eso es convertir ese array en un diagrama y para ello tengo un script que hace eso pero a partir de un array multidimensional.

Te comparto una captura:

http://prnt.sc/e5pmic
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

array multidimensional desde DB (varios niveles)

Publicado por Carlos (4 intervenciones) el 09/02/2017 16:06:18
Bueno,

Ya se resolvió como yo quería, le planteé el problema a un colega y me lo resolvió.

Tema solucionado.
Grácias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar