Realizo la siguiente consulta a una base de datos MySQL:
Código MySQL:
Ver original
Y me devuelve los siguientes datos:
Código MySQL:
Ver original
+------------+---------------------------------+----------------------------+--------------+ +------------+---------------------------------+----------------------------+--------------+ | 559 | Juan Socotroco | referencia_comp:nombre_ref | 1 | | 573 | Rararara | referencia_comp:nombre_ref | 1 | | 573 | SASASAS | referencia_comp:nombre_ref | 2 | | 561 | Roberto Sanchez | referencia_comp:nombre_ref | 1 | | 562 | | referencia_comp:nombre_ref | 1 | | 557 | | referencia_comp:nombre_ref | 1 | | 574 | | referencia_comp:nombre_ref | 1 | | 541 | | referencia_comp:nombre_ref | 1 | | 545 | | referencia_comp:nombre_ref | 1 | | 562 | | referencia_comp:ref_email | 1 | | 561 | roberto.sanchez@coca-cola.com | referencia_comp:ref_email | 1 | | 557 | | referencia_comp:ref_email | 1 | | 574 | | referencia_comp:ref_email | 1 | | 541 | | referencia_comp:ref_email | 1 | | 545 | | referencia_comp:ref_email | 1 | +------------+---------------------------------+----------------------------+--------------+
Lo que yo necesito hacer es a partir de esos datos sabiendo que los datos reales comparten object_sid y complex_enum es armar un array que contenga el nombre y el e-mail de la persona.
Lo que hice hasta el momento es separar los datos devueltos por la base de datos en 2 arrays distintos: uno para los nombres y el otro para los e-mail:
Código PHP:
Ver original
foreach ($this->userData as $k) { if ($k['id'] == 'referencia_comp:nombre_ref') { $arrayNombre[] = array('id' => $k['object_sid'], 'complex' => $k['complex_enum'], 'nombre' => $k['value']); } else { $arrayMails[] = array('id' => $k['object_sid'], 'complex' => $k['complex_enum'], 'email' => $k['value']); } }
Después de eso los unifiqué en un array nuevo y lo ordené por id:
Código PHP:
Ver original
private function orderArrayByID($a, $b) { return ($a['id'] == $b['id']) ? 0 : $a['id'] > $b['id'] ? 1 : -1; }
Se me había ocurrido recorrer el array con un for pero al entrar en el segundo es como que devuelve mal los resultados:
Código PHP:
Ver original
{ { if ($arrayAux[$i]['id'] == $arrayAux[$j]['id'] && $arrayAux[$i]['complex'] == $arrayAux[$j]['complex']) { } } }
Limpio los valores que no estan completos y re-indexo el array:
Código PHP:
Ver original
foreach ($finalArray as $k => $v) { }
Y me queda:
Código PHP:
Ver original
( ( [nombre] => Juan Socotroco [email] => juancito.socotroco@testmail.com ) ( [nombre] => Roberto Sanchez [email] => roberto.sanchez@coca-cola.com ) ( [nombre] => SASASAS [email] => sadsad@sasa.com ) ( [nombre] => Rararara [email] => juancito.socotroco@testmail.com ) )
Según lo devuelto por el array los valores de 0, 1 y 2 tienen los datos correctos, pero el número 3 ya no.
Estuve varias horas tratando de resolver esta situación pero no pude llegar a nada concreto. Espero que alguien me pueda iluminar el camino jaja.
Desde ya, gracias.