Comunidad de diseño web y desarrollo en internet online

Unir dos array asociativos

Citar            
MensajeEscrito el 25 Jun 2012 04:09 am
Saludos amigos de la comunidad. El asunto es tal como indica el título. El caso: tengo dos consultas, en cada una genero un bucle para mostrar los datos y creo un array asociativo para guardar los resultados. Ahora necesito crear una tercera tabla para mostrar los datos de ambos array. El problema es que no consigo que muestre los datos de ambos. Por separado ambos array me muestran sus datos, pero al intentar juntarlos en uno solo para mostrarlos con un foreach no me funciona:

En el primer while creo el siguiente array:

Código PHP :

$p_array[] = array("valor1" => "$valor1", "valor2" => "$valor2");
Y en el segundo while creo:

Código PHP :

$s_array[] = array("valor3" => "$valor3");
Y ahora necesito crear un nuevo array que junto los dos anteriores para mostrarlo así:

Código PHP :

foreach ($resumen as $key => $value) {
echo $value['valor1'];
echo $value['valor2'];
echo $value['valor3'];
}
¿Cómo sería la formulación correcta para unir $p_array y $s_array? He probado lo siguiente después de horas y horas de lectura con los siguientes resultados:

Código PHP :

//lo siguiente sólo muestra los resultados de $p_array pero no de $s_array
$resumen = $p_array + $s_array;

//lo siguiente muestra los resultados de $p_array y dice que $valor3 no está definido e inmediatamente después muestra los datos de $valor3 y dice que $valor1 y $valor2 no están definidos.

//primer while:
$resumen[] = array("valor1" => "$valor1", "valor2" => "$valor2");
//segundo while
$resumen[] = array("valor3" => "$valor3");
Todas las demás formas que he probado me arrojan error.

Por favor, ayuda. Seré tonto pero aún no logro entender dónde radica el problema.

De antemano muchas gracias.

Por eareddhel

83 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Jun 2012 04:18 am
Olvidé comentar que array_merge tampoco me funciona y tiene el mismo efecto que el segundo comportamiento antes indicado, es decir, de mostrar primero uno y después otro resultado pero diciendo que el otro no está definido...

Código PHP :

$resumen = array_merge($p_array $s_array);
:cry:

Por eareddhel

83 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Jun 2012 04:20 am
Corrección (faltó una coma):

Código PHP :

$resumen = array_merge($p_array, $s_array);

Por eareddhel

83 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Jun 2012 02:28 pm
esos while son de una base de datos???

el metodo mas simple apra entenderlo seria esta

Código PHP :

<?php
$todo_array = array();
//consulta 1
while($p_array = mysql_fetch_array($query))
{
   $todo[] = $p_array;
/*aca cualquier proceso*/
}
//consulta 2
while($s_array = mysql_fetch_array($query))
{
   $todo[] = $s_array;
/*aca cualquier proceso*/
}
//asi la variable $todo contiene ambos arrays

otra opcion es usar
array_push
y call_user_func_array

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Jun 2012 07:38 pm
Gracias tuadmin por responder. En efecto, ambos while son resultado de una consulta cada uno. He aplicado tu solución tal cuál y hace lo mismo que ya había comentado. La consulta quedó así:

Código PHP :

$resumen = array();
//primera consulta
while($resultado = mysql_fetch_array($consulta)){
$p_array = array("valor1" => "$valor1", "valor2" => "$valor2");
$resumen[] = $p_array;
}
//segunda consulta
while($resultado = mysql_fetch_array($consulta)){
$s_array = array("valor3" => "$valor3");
$resumen[] = $s_array;
}
//tabla resumen
foreach ($resumen as $key => $value) {
echo $value['valor1'];
echo $value['valor2'];
echo $value['valor3'];
}
Lo anterior mestra los datos de la siguiente forma:

Código :

VALOR1 | VALOR2 | VALOR3
 1     | A      | 
 2     | B      |
 3     | C      |
       |        | X
       |        | XI
       |        | XII
Y además me anuncia primero que el valor 3 no está definido y luego que los valores 1 y 2 no están definidos. Seguiré probando con array_push y con call_user_func_array como sugieres a ver qué tal.

Sigo agradeciendo de antemano cualquier ayuda, sugerencia y/o empujoncito.

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 25 Jun 2012 09:14 pm
??? raro lo que quieres ahcer :), jeje y dime cual es el resultado que estas esperand??? ya que mostraste lo que te muestra , pero cual es el resultado final que deseas obtener?? asi te podremos ayudar mas

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Jun 2012 10:32 pm
Jajajaja... El resultado que quiero es el siguiente:

Código PHP :

VALOR1 | VALOR2 | VALOR3
 A     | 4      | 6
 B     | 5      | 7
 C     | 6      | 8
:lol:

Te explico, tengo dos tablas que lleno cada una con una consulta. Lo hago así porque cada tabla corresponde a un semestre del año. Entonces, de cada tabla, necesito los totales para sumarlos en la tercera tabla de resumen. Entonces, el valor1 es el nombre del item, el valor2 son los totales del primer semestre y valor3 son los totales del segundo semestre. Esa es la idea. Entonces, tanto $valor1 como $valor2 los almaceno en la primera consulta (primera tabla) y $valor3 en la segunda consulta (segunda tabla). Espero que ahora se entienda mejor.

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 26 Jun 2012 01:38 am
A ver, puedes hacerlo desde la consulta:

Si tienes que tus consultas son:

Código MySQL :

SELECT campo1,campo 2 FROM tabla1


y

Código MySQL :

SELECT campo3 FROM tabla2


Haz esto:

Código MySQL :

SELECT t1.campo1,t1.campo2,t2.campo3 FROM tabla1 t1, tabla2 t2


Y en el PHP:

Código PHP :

$resumen = array();
while($resultado = mysql_fetch_array($consulta)){
$resumen = array("valor1" => "$valor1", "valor2" => "$valor2", "valor3" => "$valor3");
}

//tabla resumen
foreach ($resumen as $key => $value) {
echo $value['valor1'];
echo $value['valor2'];
echo $value['valor3'];
}

Por FabVale

26 de clabLevel



Genero:Femenino  

Programador web, SEO

chrome
Citar            
MensajeEscrito el 26 Jun 2012 01:44 am
Gracias FabVale, pero el caso es que el único dato que está en la bd es el $valor1. Con los datos de la consulta sumo la fila y obtengo como resultado $valor2, el cual adquiere un valor en cada iteración que son los que guardo en el primer array. Como los datos de $valor1 son los mismos en la segunda consulta, sólo guardo en el segundo array los resultados de $valor3 que es, al igual que el caso anterior, el resultado de la suma de cada fila.

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.