Foros del Web » Programando para Internet » PHP »

Dos dias tratando de sumar datos de array

Estas en el tema de Dos dias tratando de sumar datos de array en el foro de PHP en Foros del Web. Les agradacere me den una manito con este lio, que me ha quitado casi dos dias de trabajo.....ya probé muchas opciones, peo parece que las ...
  #1 (permalink)  
Antiguo 11/11/2003, 08:18
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 0
Dos dias tratando de sumar datos de array

Les agradacere me den una manito con este lio, que me ha quitado casi dos dias de trabajo.....ya probé muchas opciones, peo parece que las aplique mal....

alli les va el código y gracias por su ayuda:


$servicios[]=$row2; // array con valores de servicios extraido de un select
$productos[]=$row3; // array con valores de productos...
$cant=60

// Necesito saber el total de la suma de los valores del campo "Descuento"

He intentado lo siguiente, pero nada de nada.

$val="";
for($a=0;$a<=$cant;$a++){
$uno=$servicios[$a][Descuento];
$desc_uno=$uno+$val; //total descuentos servicios
echo $desc_uno;

$dos=$productos[$a][Descuento];
$desc_dos=$dos+$val; //total descuentos productos

$total=$desc_uno+$desc_dos;
echo $total; // sale 7.500904000000000000...(mal resultado). deveria salir 20.50

/* los datos que tengo en esos campos son
0.00
7.5
0.00
0.00
9
0.00
4
0.00
0.00
...
*/
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #2 (permalink)  
Antiguo 11/11/2003, 08:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Tal como tienes tu codigo:

$val siempre vale '', porque no actualizas sus valor, no hay ningun $val=algo

$desc_uno siempre valdra al final lo mismo que el ultimo descuento de $servicios, ya que siempre pisas su valor por el ultimo.

$desc_dos siempre valdra al final lo mismo que el ultimo descuento de $productos, ya que siempre pisas su valor por el ultimo.

Ademas, consideras que siempre hay 60 elementos en los 2 arrays, no se si esto es cierto o no (depende de tu diseño).

Creo que tu codigo quedaria mejor:
Código PHP:
$desc_uno=0;
foreach(
$servicios as $servicio) {
  
$desc_uno=$desc_uno+$servicio['Descuento'];
}
$desc_dos=0;
foreach(
$productos as $producto) {
  
$desc_dos=$desc_dos+$producto['Descuento'];
}

$total=$desc_uno+$desc_dos
Creo que seria algo asi. Lo he hecho de cabeza, asi que puede haber algun error.

La teoria es que debes usar una variable como "acumulador", es decir, donde sumas su valor anterior con el nuevo valor a acumular ($desc_uno=$desc_uno+$servicio['Descuento'];).

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 11/11/2003, 10:48
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
josemi tiene razon, pero que sepas que tambien existe la funcion array_sum(array) y listo
__________________
Usuario registrado de Linux #288725
  #4 (permalink)  
Antiguo 11/11/2003, 14:57
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Pero por lo que veo el array_sum() solo suma los elementos de un array. Y en este caso, solo quiere sumar una "columna" de un array bidimensional. Creo que no funcionaria en este caso. Aunque ya te digo que es por lo que veo en el manual, no lo he probado.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 11/11/2003, 15:48
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 0
Si, Josemi, tienes razon, use el array_sum y no funsionó, sin embargo aun voy a probar tu sugerencia anterior.

Gracias
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
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 01:42.