Foros del Web » Programando para Internet » PHP »

Como "juntar" valores de un array con mismo índice

Estas en el tema de Como "juntar" valores de un array con mismo índice en el foro de PHP en Foros del Web. Perdón por la vaga descripción del título pero creo que con el ejemplo quedará claro. Partiendo de este array que voy llenando con resultados de ...
  #1 (permalink)  
Antiguo 21/11/2012, 03:52
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Como "juntar" valores de un array con mismo índice

Perdón por la vaga descripción del título pero creo que con el ejemplo quedará claro.

Partiendo de este array que voy llenando con resultados de consulta sql:
Código PHP:
Ver original
  1. array (size=1331)
  2.   0 =>
  3.     array (size=8)
  4.       'clacli' => string '2368' (length=4)
  5.       'nombre' => string 'Cliente 1' (length=24)
  6.       'email' => string '[email protected]' (length=22)
  7.       'serie' => string 'C' (length=1)
  8.       'numero' => string '1824' (length=4)
  9.       'importe' => string '96.29' (length=5)
  10.       'vencim' => string '2012-11-10' (length=10)
  11.       'factura' => string 'C1824' (length=5)
  12.   1 =>
  13.     array (size=8)
  14.       'clacli' => string '5158' (length=4)
  15.       'nombre' => string 'Cliente 2' (length=8)
  16.       'email' => string '[email protected]' (length=18)
  17.       'serie' => string 'B' (length=1)
  18.       'numero' => string '7069' (length=4)
  19.       'importe' => string '108.67' (length=6)
  20.       'vencim' => string '2012-11-10' (length=10)
  21.       'factura' => string 'B7069' (length=5)
  22.   2 =>
  23.     array (size=8)
  24.       'clacli' => string '12894' (length=5)
  25.       'nombre' => string 'Cliente 3' (length=25)
  26.       'email' => string '[email protected]' (length=16)
  27.       'serie' => string 'C' (length=1)
  28.       'numero' => string '1825' (length=4)
  29.       'importe' => string '140.68' (length=6)
  30.       'vencim' => string '2012-11-10' (length=10)
  31.       'factura' => string 'C1825' (length=5)
  32.   3 =>
  33.     array (size=8)
  34.       'clacli' => string '12894' (length=5)
  35.       'nombre' => string 'Cliente 3' (length=25)
  36.       'email' => string '[email protected]' (length=16)
  37.       'serie' => string 'C' (length=1)
  38.       'numero' => string '1947' (length=4)
  39.       'importe' => string '158.80' (length=6)
  40.       'vencim' => string '2012-11-13' (length=10)
  41.       'factura' => string 'C1947' (length=5)

Como vemos los 2 últimos array son del mismo cliente. El array lo voy a usar para enviar e-mails con todas las facturas que tienen pendientes los clientes.

No se muy bien como hacerlo. Lo que quiero es enviar un correo similar a:
Le recordamos que tiene pendientes las facturas:
C81272 con importe 120 €
C43002 con importe 60 €

Bueno algunos campos más pero con eso ya me apañaría.
La cuestión es que no se me ocurre una solución.

Puedo hacer de alguna forma que al recorrer el array me busque ese 'clacli' (clave cliente) en el resto de arrays ?
  #2 (permalink)  
Antiguo 21/11/2012, 04:03
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Como "juntar" valores de un array con mismo índice

Lo más fácil es que clacli sea el índice de tu arreglo y factura sea también un arreglo con todas las facturas pendientes, más o menos así:

Código PHP:
Ver original
  1. $clientes = array(
  2.     2368 => array(
  3.       'nombre' => 'Cliente 1',
  4.       'email' => '[email protected]',
  5.       'facturas' => array(
  6.            'C1824' => array( // ID de factura
  7.                    'serie' => string 'C' (length=1)
  8.                    'numero' => string '1824' (length=4)
  9.                    'importe' => string '96.29' (length=5)
  10.                    'vencim' => string '2012-11-10' (length=10)
  11.            ),
  12.       ),
  13.     ),
  14. );
  15.  
  16. // Recorres el arreglo
  17. foreach($clientes as $cliente => $datos) {
  18.          $correo = "$cliente - {$datos['nombre']} - {$datos['email']}"; // O el formato que prefieras
  19.          // Luego recorres las facturas
  20.         foreach($datos['facturas'] as $factura => $facturaDatos) {
  21.              $correo .= "$factura ... vencimiento, importe, etc.\n";
  22.         }
  23.         // Aquí envías el correo
  24. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 21/11/2012, 04:21
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Como "juntar" valores de un array con mismo índice

Muchas gracias Triby, ya lo he solucionado y me ha quedado un código chulísimo además. Jaja.

Saludos y gracias.

Etiquetas: juntar, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:01.