El problema es que el índice para cada elemento en "todos" debe ser el campo id. Para generar el array sería algo como:
Código PHP:
Ver original// Creas el array
while($row = /* instrucción para leer la consulta */) {
// Agregas en 'todos'
$members['todos'][$row['id']] = $row;
// sponsor debe ser numérico para evitarte problemas, aunque sea cero
$sponsor = (int) $row['sponsor'];
// Verificas que exista el padre, o lo creas
if(!isset($members[$sponsor])) { $members[$sponsor] = array(); }
// Solo necesitas la ID
$members[$sponsor][] = $row['id'];
}
Te debe quedar algo como:
Código:
$members = Array (
[todos] => Array (
[1] => Array (
[id] => 1
[name] => cdiazr
[Sponsor] =>
)
[2] => Array (
[id] => 2
[name] => sarahg
[Sponsor] => 1
)
[3] => Array (
[id] => 3
[name] => ygn
[Sponsor] => 1
)
[4] => Array (
[id] => 4
[name] => oscar
[Sponsor] => 2
)
[5] => Array (
[id] => 5
[name] => usu5
[Sponsor] => 4
)
[6] => Array (
[id] => 6
[name] => usu6
[Sponsor] => 4
)
[7] => Array (
[id] => 7
[name] => usu7
[Sponsor] => 4
)
)
[0] => array(1)
[1] => array(2, 3)
[2] => array(4, 5, 6, 7)
)
Con esto y el global $members ya te debe funcionar correctamente.