Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Unir dos array asociativo

Estas en el tema de Unir dos array asociativo en el foro de PHP en Foros del Web. Buenas gente del foros, tengo el siguiente problema es como puedo unir dos array asociativo pero a la vez que se haga se cree un ...
  #1 (permalink)  
Antiguo 23/07/2013, 13:22
 
Fecha de Ingreso: julio-2013
Mensajes: 21
Antigüedad: 10 años, 9 meses
Puntos: 0
Unir dos array asociativo

Buenas gente del foros, tengo el siguiente problema es como puedo unir dos array asociativo pero a la vez que se haga se cree un indice en el array con numero, es decir, tengo los siguientes array:

$a=array(nombre=>jose,nombre=>carlos);
$b=array(apellido=>contrera,apellido=>velazque);

al unirlo el resultado seria algo como esto:

$union=array(0=>(nombre=>jose,apellido=>contrera), 1=>(nombre=>carlos,apellido=>velazque));

si me explico que la unión forme un nuevo array donde jose contrera este en la linea 0 del vector y carlos velazque en la linea 1, pero necesito que siga siendo asociativo combinado con indice vectorial.

le agradezco en todo lo que me pueda ayudar con este problema.
  #2 (permalink)  
Antiguo 23/07/2013, 13:25
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Unir dos array asociativo

Código PHP:
Ver original
  1. $union = array($a,$b);
__________________
Salu2!
  #3 (permalink)  
Antiguo 23/07/2013, 14:38
 
Fecha de Ingreso: julio-2013
Mensajes: 21
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Unir dos array asociativo

Cita:
Iniciado por Italico76 Ver Mensaje
Código PHP:
Ver original
  1. $union = array($a,$b);
Gracias por tu rápida respuesta Italico pero al hacer eso me lo pone en una misma linea del vector, es decir, me hace esto $union=array(0=>(nombre=>jose,nombre=carlos,apelli do=>contreras,apellido=>velazquez));

y lo que se quiere es:

$union=array(0=>(nombre=>jose,apellido=>contreras) ,1=>(nombre=carlos,,apellido=>velazquez));

fíjate que el primer nombre y el primer apellido se encuentra en la linea del vector 0 y el segundo nombre y el segundo apellido en la linea del vector 1 pero no pierde su asociativa, si me explico bien?
  #4 (permalink)  
Antiguo 23/07/2013, 14:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Unir dos array asociativo

Primero que estan mal los arrays.... no puedes repetir el KEY ... es una falla de PHP no advertirtelo!

Código PHP:
Ver original
  1. <?php
  2. $nombres = array('jose','carlos');
  3. $apellidos = array('contrera','velazque');
  4.  
  5. $fullname = array();  // union
  6.  
  7.  
  8. foreach ($nombres as $key => $nombre){        
  9.     $fullname[] = array ('nombre'=>$nombre,'apellido'=>$apellidos[$key]);
  10. }
  11.  
  12. var_dump ($fullname);

Código SALIDA:
Ver original
  1. array (size=2)
  2.   0 =>
  3.     array (size=2)
  4.       'nombre' => string 'jose' (length=4)
  5.       'apellido' => string 'contrera' (length=8)
  6.   1 =>
  7.     array (size=2)
  8.       'nombre' => string 'carlos' (length=6)
  9.       'apellido' => string 'velazque' (length=8)
__________________
Salu2!
  #5 (permalink)  
Antiguo 23/07/2013, 19:33
 
Fecha de Ingreso: julio-2013
Mensajes: 21
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Unir dos array asociativo

El resultado es lo que quiero pero como hago para sacar un valor de allí, es decir, como saco el segundo nombre y el segundo apellido y mostrarlo con un echo?
  #6 (permalink)  
Antiguo 23/07/2013, 19:46
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Unir dos array asociativo

Como no se si te interesa o no generar $fullname (o $union) o si solo quieres "imprimir" con echo... te dejo las dos formas:

Código PHP:
Ver original
  1. <?php
  2. $nombres = array('jose','carlos');
  3. $apellidos = array('contrera','velazque');
  4.  
  5. $fullname = array();  // union
  6.  
  7.  
  8. foreach ($nombres as $key => $nombre){              
  9.     echo "Buenas Sr. $nombre {$apellidos[$key]}<br/>";
  10.     $fullname[] = array ('nombre'=>$nombre,'apellido'=>$apellidos[$key]);
  11. }
  12.  
  13. foreach ($fullname as $arr){                  
  14.     echo "Hasta mañana Sr.  {$arr['nombre']} {$arr['apellido']}<br/>";    
  15. }

Logicamente que sino vas a generar $fullname quitas esa parte y borras el final ... ahora te explico algo:

Cuando haces:

Código PHP:
Ver original
  1. foreach ($nombres as $key => $nombre){}

... es para "recorrer" todo el array de $nombres pero tambien para recorrer $apellidos puesto que obtengo el indice en $key y pues como el primer nombre se corresponde con el primer apellido, segundo con segundo, tercero con tercero... etc... entonces .. $apellidos[$key] es el ($key-ésimo) apellido

... y pues podrias referite al ($key-ésimo) nombre como $nombres[$key] pero del foreach sale como $nombre asi que: $nombre = $nombres[$key] (dentro del foreach)
__________________
Salu2!
  #7 (permalink)  
Antiguo 24/07/2013, 07:12
 
Fecha de Ingreso: julio-2013
Mensajes: 21
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Unir dos array asociativo

Gracias, Italico por tu respuesta me ayudo a solucionar mi problema

Etiquetas: asociativo
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 18:45.