
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:
Pero no consigo implementarlo en mi ejemplo pues mi array resultante es asociativo y tiene una estructura parecida a la que comparto ahora:
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


0