Este no es un foro de programación, no lo olvides. Yo voy a proporcionarte una propuesta mediante SQL, es decir, una consulta a la base de datos. Pruébala y verás lo que ocurre:
Código MySQL:
Ver original usu2.nombre,
usu2.apellidos,
usu2.id IDUSUARIO,
SELECT usu.id idusuario
, IFNULL( SUM( sim.importe
) , 0 ) impusu
, IFNULL( SUM( sim.referidos
) , 0 ) refusu
, '0'impsp
, '0'refsp
)
SELECT usu.id_sponsor
, '0', '0', SUM( sim.importe
) , SUM( sim.referidos
)
con programación tal vez harías por separado las dos consultas y luego al recorrer una comparar con los datos de la otra y pasarlos, o cargar en un array y luego al hacer la segunda carga..., pero eso debes preguntarlo en el foro de programación.
Una breve explicación sobre la consulta. Se trata de dos consultas para traer lo obtenido por un usuario como usuario y como sponsor. Uno mediante UNION ALL desplazando a distinto campo(alias) los datos como usuario y como sponsor. Luego hago una subconsulta con esos datos y los de todos los usuarios (necesario el uso de LEFT),con la que me traigo los nombres, apellidos e id, luego controlo los nulos para las sumas con IFNULL, agrupo por el id (en una consulta el usuario y en la otra el sponsor) y muestro los datos...