Foros del Web » Programando para Internet » PHP »

unir el resultado de 2 foreach como uno solo

Estas en el tema de unir el resultado de 2 foreach como uno solo en el foro de PHP en Foros del Web. Hola gente tengo una duda es posisble si tengo dos foreach el primero me trae comentario y fecha_de_comentario ejemplo 1.- 02/1/2014/ - comentario 1 2.- ...
  #1 (permalink)  
Antiguo 08/09/2014, 07:44
 
Fecha de Ingreso: febrero-2011
Mensajes: 167
Antigüedad: 13 años, 2 meses
Puntos: 9
unir el resultado de 2 foreach como uno solo

Hola gente tengo una duda es posisble si tengo dos foreach
el primero me trae comentario y fecha_de_comentario ejemplo

1.- 02/1/2014/ - comentario 1
2.- 03/1/2014/ - comentario 2

El segundo foreach me trae los compromisos y sus respectivas fechas

1.- 02/1/2014 - compromiso 1
2.- 03/1/2014 - compromiso 2
3.- 04/1/2014 - compromiso 3


Mi pregunta es ¿como podría hacer para que se unieran y "si tienen las misma fecha" me lo muestre asi


1.- 02/1/2014/ - comentario 1
02/1/2014 - compromiso 1

2.- 03/1/2014/ - comentario 2
03/1/2014 - compromiso 2

3.- //no tine comentario en esta fecha
04/1/2014 - compromiso 3

alquien alguna pista sugerencia? gracias de antemano

//BLOQUE DE COMENTARIOS
foreach ($ainteraccion[comentario_interaccion_otro][$key] as $idinteraccion_complejo => $comentario_interaccion_otro) {

$plantilla_otro_comentario->iniciaBloque("bloque_comentario_interaccion_otro" );
$plantilla_otro_comentario->reemplazaEnBloque("comentario_interaccion_otro" , $comentario_interaccion_otro, "bloque_comentario_interaccion_otro");
$plantilla_otro_comentario->reemplazaEnBloque("fecha_a", $ainteraccion[fecha_otro_comentario][$key][$idinteraccion_complejo], "bloque_comentario_interaccion_otro");
}
// BLOQUE DE COMPROMISOS
foreach ($ainteraccion['compromiso'][$key] as $compromiso_key => $compromiso) {
$count++;
$plantilla->iniciaBloque("item_compromiso");
$plantilla->reemplazaEnBloque("compromiso", $compromiso, "item_compromiso");
$plantilla->reemplazaEnBloque("fecha_compromiso", $ainteraccion['fecha_compromiso'][$key][$compromiso_key], "item_compromiso");

}
  #2 (permalink)  
Antiguo 08/09/2014, 10:35
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: unir el resultado de 2 foreach como uno solo

Lo que puedes hacer es unir dos arreglos, o bien dentro de un foreach al recorrer un arreglo consultar si existe o no datos en el segundo arreglo, si es que tienen los mismos índices.

Por cierto, usa el highlight para hacer legible el código.

Código PHP:
Ver original
  1. foreach ($ainteraccion[comentario_interaccion_otro][$key] as $idinteraccion_complejo => $comentario_interaccion_otro) {
  2.  
  3.    $plantilla_otro_comentario->iniciaBloque("bloque_comentario_interaccion_otro" );
  4.    $plantilla_otro_comentario->reemplazaEnBloque("comentario_interaccion_otro" , $comentario_interaccion_otro, "bloque_comentario_interaccion_otro");
  5.    $plantilla_otro_comentario->reemplazaEnBloque("fecha_a", $ainteraccion[fecha_otro_comentario][$key][$idinteraccion_complejo], "bloque_comentario_interaccion_otro");
  6.  
  7.    if(isset($ainteraccion['compromiso'][$key][$idinteraccion]){
  8.       //operaciones para los compromisos
  9.    }else
  10.       //no hay compromisos.
  11. }
  #3 (permalink)  
Antiguo 08/09/2014, 11:38
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: unir el resultado de 2 foreach como uno solo

¿De dónde obtienes los datos de los bloques foreach? ¿De una base de datos?
Si es así, tal vez te convenga armar un solo array usando un join de SQL:

O sea, estás usando estas dos consultas a la base de datos:

SELECT fecha, comentario FROM comentarios;
SELECT fecha, compromiso FROM compromisos;

Pero podrías usar una sola consulta como esta:

SELECT A.fecha, A.comentario, B.compromiso FROM comentarios as A
JOIN compromisos as B ON A.fecha=B.fecha

Es mucho más eficiente, creo yo.

Etiquetas: fecha, foreach, resultado
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 14:24.