Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como puedo juntar dos arrays en PHP

Estas en el tema de Como puedo juntar dos arrays en PHP en el foro de PHP en Foros del Web. Hola tengo estos dos arrays: Código: Array ( [0] => Array ( [id_user] => 4 [nombre_usuario] => juan ) [1] => Array ( [id_user] => ...
  #1 (permalink)  
Antiguo 04/11/2015, 08:45
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
Como puedo juntar dos arrays en PHP

Hola tengo estos dos arrays:
Código:
Array ( [0] => Array ( [id_user] => 4 [nombre_usuario] => juan ) [1] => Array ( [id_user] => 10 [nombre_usuario] => pedro ) [2] => Array ( [id_user] => 11 [nombre_usuario] => maria ) ) 

Array ( [0] => Array ( [id_user] => 4 [total_noticias] => 1 ) )
Bien, uso (array_merge) para juntarlos y asi formar un unico array, y despues uso (array_unique) con la intencion de que los que tienen id_user = 4 se fusionen en uno solo de forma que quedase asi

Código:
Array ( [0] => Array ( [id_user] => 4 [nombre_usuario] => juan  [total_noticias] => 1) [1] => Array ( [id_user] => 10 [nombre_usuario] => pedro ) [2] => Array ( [id_user] => 11 [nombre_usuario] => maria ) )
pero lo unico que consigo es que me salga el siguiente error:
Notice: Array to string conversion in ...

Alguien me puede ayudar??

Gracias
  #2 (permalink)  
Antiguo 04/11/2015, 17:51
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Como puedo juntar dos arrays en PHP

Saludo
Eso se debe a que hay distintos tipos de datos (strings, number)

Por ende, se debe usar SORT_REGULAR como segundo parámetro de
la función array_unique.

Sin embargo, como no hay duplicados ya, el array permanecerá igual
que en el estado del merge.

¿Solución? For anidado.
Recorrer los arrays, primero el de los usuarios, y dentro del recorrido
de este, recorrer el total de noticias, y revisar sí id_user es igual en ambos,
entonces que genere una posición en el primer array con el nombre
total_noticias, y le asigne el valor de total_noticias del segundo array.

Con eso ya se obtiene el resultado esperado.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 05/11/2015, 06:29
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Como puedo juntar dos arrays en PHP

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo
Eso se debe a que hay distintos tipos de datos (strings, number)

Por ende, se debe usar SORT_REGULAR como segundo parámetro de
la función array_unique.

Sin embargo, como no hay duplicados ya, el array permanecerá igual
que en el estado del merge.

¿Solución? For anidado.
Recorrer los arrays, primero el de los usuarios, y dentro del recorrido
de este, recorrer el total de noticias, y revisar sí id_user es igual en ambos,
entonces que genere una posición en el primer array con el nombre
total_noticias, y le asigne el valor de total_noticias del segundo array.

Con eso ya se obtiene el resultado esperado.
Hola, gracias por responder, ya me plantee lo de hacer el for anidado pero tenia miedo de que quizas tomase demasiados recursos del servidor, he tenido que incorporar otro array a mayores por lo que he hecho esto:
Código:
for(...){
 $valor1
  for(...){
   $valor2
   if($valor1==$valor2){
    for(...){
     $valor3
     if($valor1==$valor3){
      coinciden: $valor1, $vaor2 y $valor3
     }
    }
   }
  }
}
¿que te parece? en caso de que no coincidan todos los ID o bien esten desordenados reconocerian todos los que coinciden, ¿seria una solucion?

Gracias por tu tiempo
Un cordial saludo
  #4 (permalink)  
Antiguo 05/11/2015, 06:51
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: Como puedo juntar dos arrays en PHP

Calculos como estos son solamente milisegundos para el servidor, puedes poner 3000 lineas de arrays que seguirá tardando lo mismo mientras no tengas un for infito :)
  #5 (permalink)  
Antiguo 05/11/2015, 09:50
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Como puedo juntar dos arrays en PHP

Cita:
Iniciado por hechicerd0 Ver Mensaje
Calculos como estos son solamente milisegundos para el servidor, puedes poner 3000 lineas de arrays que seguirá tardando lo mismo mientras no tengas un for infito :)
Desconozco tambien el tiempo de calculo pero pense que sumados al numero de usuarios conectados al mismo tiempo podria ser un problema, gracias amigo.
  #6 (permalink)  
Antiguo 07/11/2015, 02:14
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Como puedo juntar dos arrays en PHP

Cita:
Iniciado por jonyjdv Ver Mensaje
Hola, gracias por responder, ya me plantee lo de hacer el for anidado pero tenia miedo de que quizas tomase demasiados recursos del servidor, he tenido que incorporar otro array a mayores por lo que he hecho esto:
Código:
for(...){
 $valor1
  for(...){
   $valor2
   if($valor1==$valor2){
    for(...){
     $valor3
     if($valor1==$valor3){
      coinciden: $valor1, $vaor2 y $valor3
     }
    }
   }
  }
}
¿que te parece? en caso de que no coincidan todos los ID o bien esten desordenados reconocerian todos los que coinciden, ¿seria una solucion?

Gracias por tu tiempo
Un cordial saludo
Saludo.
Sí, es una solución aceptable.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 09/11/2015, 08:03
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Como puedo juntar dos arrays en PHP

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo.
Sí, es una solución aceptable.
vale gracias, doy este tema por solucionado

Etiquetas: arrays, juntar
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 08:11.