Foros del Web » Programando para Internet » PHP »

Sumar arrays...

Estas en el tema de Sumar arrays... en el foro de PHP en Foros del Web. Saludos... Despues de hacer una consulta a una base de datos, debo hacer una simple operación matemática con un par de datos listados en array: ...
  #1 (permalink)  
Antiguo 20/08/2010, 01:32
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 21 años, 3 meses
Puntos: 5
Pregunta Sumar arrays...

Saludos...

Despues de hacer una consulta a una base de datos, debo hacer una simple operación matemática con un par de datos listados en array:

Código PHP:
$array1 = array($col[1]);
$array2 = array($col[2]);
    
list(
$array_1a) = $array1;
list(
$array_2a) = $array2;
    
$var1 = array($array_1a/$array_1b); 
Esa división se hace perfectamente pero el 'echo' lo veo impreso sin comas:

Código PHP:
echo $var1;
// Imprime 1011121314151617181920 
Y en principio deberùia tener:
Código PHP:
echo $var1;
//  10,11,12,13,14,15,16,17,18,19,20 
Pues la idea es sumar los valores de ese array a modo:

Código PHP:
echo array_sum($var1);
// Debería de imprimir 165 
Cómo podría ajustar lo de la comas en '$var1' ?

Gracias
__________________
Andrew :P
  #2 (permalink)  
Antiguo 20/08/2010, 02:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Sumar arrays...

Podrías poner un poco más de código, he creado esto, pero no se como lo tienes tú y si me lo invento te estaré dando alguna solución errónea.

Código PHP:
<?php
$array_1a 
"";
$array_2a "";

$array1 = array(10,11,12,13,14,15,16,17,18,19,20);
$array2 = array(10,11,12,13,14,15,16,17,18,19,20);
    
list(
$array_1a) = $array1;
list(
$array_2a) = $array2;
    
$var1 = array($array_1a/$array_2a);

echo 
"<pre>";
print_r($var1);
print_r($array1);
print_r($array2);
print_r($array_1a);
print_r($array_2a);
echo 
"</pre>";
?>
  #3 (permalink)  
Antiguo 20/08/2010, 02:37
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 21 años, 3 meses
Puntos: 5
Respuesta: Sumar arrays...

Gracias Alcalina...

Pues es más o menos como el ejemplo que describes en tu POST. De hecho, al listar los valores de "$var1 = array($array_1a/$array_2a);" se mostrarán una serie de valores sin comas (1011121314151617181920) en vez de mostrat algo como (10,11,12,13,14,15,16,17,18,19,20).

El paso siguiente a darles esa coma que no aparece es sumar la array (array_sum($var1)) pero no lo puedo hacer porque no hay ningun valor separado por comas.

Así... Cómo puedo añadirle las comas al array que se henera en $var1?
__________________
Andrew :P
  #4 (permalink)  
Antiguo 20/08/2010, 02:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Sumar arrays...

Lo unico que me saca con ese código es esto, no me sale la cadena que te sale a tí, por eso te decía si podías poner algo más de código, porque hay variables que no se de donde salen ni que valor tienen.

Código PHP:
VAR 1:
Array
(
    [
0] => 1
)

ARRAY 
1:
Array
(
    [
0] => 10
    
[1] => 11
    
[2] => 12
    
[3] => 13
    
[4] => 14
    
[5] => 15
    
[6] => 16
    
[7] => 17
    
[8] => 18
    
[9] => 19
    
[10] => 20
)

ARRAY 
2:
Array
(
    [
0] => 10
    
[1] => 11
    
[2] => 12
    
[3] => 13
    
[4] => 14
    
[5] => 15
    
[6] => 16
    
[7] => 17
    
[8] => 18
    
[9] => 19
    
[10] => 20
)

ARRAY 
1A:
10
ARRAY 2A:
10 

Editado...

Y porque no pruebas a hacerlo así? A mi me los lista bien, sin llegar a sumar claro.

Código PHP:
<?php
$array_1a 
"";
$array_2a "";
$var1 "";

$array1 = array(10,11,12,13,14,15,16,17,18,19,20);
$array2 = array(10,11,12,13,14,15,16,17,18,19,20);

for (
$i=0;$i<count($array1);$i++)
{    
  
$array_1a $array1[$i];
  
$array_2a $array2[$i];
  
$var1 .= $array_1a/$array_2a;
  if (
$i<(count($array1)-1)) $var1 .= ",";
}

echo 
"<pre>";
echo 
"<br>VAR 1:<br>";
echo 
$var1;
echo 
"<br>ARRAY 1:<br>";
print_r($array1);
echo 
"<br>ARRAY 2:<br>";
print_r($array2);
echo 
"<br>ARRAY 1A:<br>";
print_r($array_1a);
echo 
"<br>ARRAY 2A:<br>";
print_r($array_2a);
echo 
"</pre>"
?>

Última edición por Alcalina; 20/08/2010 a las 03:03 Razón: Aver si así te sirve
  #5 (permalink)  
Antiguo 20/08/2010, 03:07
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 21 años, 3 meses
Puntos: 5
Respuesta: Sumar arrays...

Bien... Intento explicarme mejor desde un principio:

Tengo una consulta a la base de datos que me genera una serie de arrays de la siguiente manera:

Código PHP:
Ver original
  1. $consulta = "SELECT tipo, sum(valor), COUNT(unidades) FROM miTabla GROUP BY tipo;";
  2. $resultado = mysql_query($$consulta) or die (mysql_error());
  3.  
  4.     while ($col = mysql_fetch_array($resultado, MYSQL_NUM)) {
  5.  
  6. $array1 = array($col[1]); // array para valor
  7. $array2 = array($col[2]); // array para cantidades
  8.    
  9. list($array_1a) = $array1; // listo array de valores
  10. list($array_2a) = $array2;  // listo array de cantidades
  11.    
  12. $var1 = array($array_1a/$array_1b);  // Divido el valor entre cantidades
  13. }

Pues bien... El '$var1', me genera el siguiente listado (+/- por que es larguísimo):
Código HTML:
Ver original
  1. 101112131415161718192021222324252627282930

Este listado de arriba, tendría que mostrarse de la siguiente manera:
Código HTML:
Ver original
  1. 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30

Por qué?... Pues porque después quiero sumar ese listado para obtener un total de '$var1'. Para los resultados que he puesto en el POST, tendría que tener un valor de 420, que lo tendría que notar de la siguiente manera:

Código PHP:
Ver original
  1. $total_var1 = array_sum($var1);
  2.  
  3. echo $total_var1; // Debería imprimir 420

Cuál es el problema?... Que el listado de '$var1' no separa los valores por comas, por tanto el 'array_sum' no tiene ninguna funcionalidad.

Así, Cómo podría añadir esas comas en '$var1'?

Saludos...
__________________
Andrew :P
  #6 (permalink)  
Antiguo 20/08/2010, 03:14
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Sumar arrays...

Vale, me aclaro un poco más, me queda una duda, que hay en la variable $array_1b, 1?
  #7 (permalink)  
Antiguo 20/08/2010, 03:20
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 21 años, 3 meses
Puntos: 5
Respuesta: Sumar arrays...

Lo siento!... es un error por las prisas... Esa variable debe quedar así:

Código PHP:
Ver original
  1. list($array_1a) = $array1; // listo array de valores
  2. list($array_2a) = $array2;  // listo array de cantidades
  3.  
  4. $var1 = array($array_1a/$array_2a);  // Divido el valor entre cantidades
  5.  
  6. }
__________________
Andrew :P
  #8 (permalink)  
Antiguo 20/08/2010, 03:53
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Sumar arrays...

Vale, así funciona, el problema de que no te lo separara por comas, es que cada vez que recorrias una vuelta de bucle, creabas un array nuevo, no se iba añadiendo al indice.

Código PHP:
<?php
//$consulta = "SELECT tipo, sum(valor), COUNT(unidades) FROM miTabla GROUP BY tipo;";
//$resultado = mysql_query($consulta) or die (mysql_error());

$total_var1 0;

for (
$i=0;$i<20;$i++) {
  
$array1 = array(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29); // array para valor
  
$array2 = array(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29); // array para cantidades

  
list($array_1a) = $array1// listo array de valores
  
list($array_2a) = $array2;  // listo array de cantidades

  
$var1 = array($array_1a/$array_2a);  // Divido el valor entre cantidades
  
  
$total_var1 += $var1[0];
}
  echo 
$total_var1// Debería imprimir 20
?>
  #9 (permalink)  
Antiguo 20/08/2010, 04:06
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 21 años, 3 meses
Puntos: 5
Respuesta: Sumar arrays...

Alcalina...

... Gracias por tu ayuda... Sin embargo la idea no es imprimir un "count" de registros, la idea es sumarlos... Tal como te lo comenté, el propósito es sumarlos con un array_sum de tal manera que me de, en mi ejemplo 420, no 20...

Siento mucho si no me he explicado con claridad.... Hay alguna manera de sumar la lista generada por $var1?
__________________
Andrew :P
  #10 (permalink)  
Antiguo 20/08/2010, 04:55
 
Fecha de Ingreso: marzo-2009
Mensajes: 42
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Sumar arrays...

No imprimo un count de registros, lo que suma es el array de resultados de la division, que como los dos arrays que he declarado son iguales, al dividir los valores entre los mismos valores, el cociente da 1, por eso da 20, no porque se hallan sumado.

Haz la prueba y cambia los valores del 1º o del 2º array. No se si me explico.
  #11 (permalink)  
Antiguo 20/08/2010, 07:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Sumar arrays...

@andrewp Te recomiendo leer realmente un libro básico de arreglos y PHP ya que estas cometiendo muchos errores, cuando lo podrías solucionar con algo tan simple:
Código PHP:
Ver original
  1. $consulta = "SELECT tipo, sum(valor), COUNT(unidades) FROM miTabla GROUP BY tipo;";
  2. $resultado = mysql_query($consulta) or die (mysql_error());
  3. $total = array();
  4. while ($col = mysql_fetch_array($resultado, MYSQL_NUM)) {
  5.               $suma = $col[1];
  6.               $conteo = $col[2];
  7.  
  8.               $total[] = ($suma / $conteo);
  9. }
  10. echo array_sum($total);

Saludos.
  #12 (permalink)  
Antiguo 23/08/2010, 03:02
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 21 años, 3 meses
Puntos: 5
Respuesta: Sumar arrays...

Hola...

Enprincipio, quiero agradeceros a ambos por vuestras respuestas..; Durante el fin de semana pasado he estado trabajando la alternativa de Alcalina y he logrado sacar la suma cambiando algunos aspectos menores en su código propuesto.

Luego, el código simplificado de GatorV es realmente útil... Se hace lo mismo en un número muy reducido de líneas... Y sí, no le quito la razón... debería leer mucho más sobre PHP y fundamentos básicos. Me tomaré a conciencia tu consejo sin dejar de buscar soporte en este Foro.

Saludos y Graciasx1000

POST RESUELTO!
__________________
Andrew :P

Etiquetas: arrays
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:14.