Foros del Web » Programando para Internet » PHP »

Como puedo sumar esto??

Estas en el tema de Como puedo sumar esto?? en el foro de PHP en Foros del Web. Hola, tengo un archivo de texto que con unos digitos que quiero sumar, la sintaxis es así: :1:05:12 :0:39:28 :1:31:34 :1:53:59 :0:51:17 :0:23:28 :horas:minutos:segundos Y ...
  #1 (permalink)  
Antiguo 23/08/2003, 04:32
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
Como puedo sumar esto??

Hola, tengo un archivo de texto que con unos digitos que quiero sumar, la sintaxis es así:

:1:05:12
:0:39:28
:1:31:34
:1:53:59
:0:51:17
:0:23:28
:horas:minutos:segundos

Y lo que quiero es sumar las horas, los minutos y los segundos.

Osea quiero que me muestre: Horas: 3, Minutos 160, Segundos: 120. (aunque no me muestre los segundo me da igual, lo unico que necesito son las horas y los minutos).

Y hize este script, pero no se me ocurre como hacer para que funcione. Aquí os muestro el script:

Código PHP:
<?php
$horas 
0;
$minutos 0;
$segundos 0;
$anclahoras 1;
$anclaminutos 2;
$anclasegundos 3;
$archivo "internet.txt";
$abrir file("$archivo");
for (
$i 0$i filesize ($archivo); $i++;){
$cortar explode(":""$abrir[$i]");
}
$numdecortes count($cortar);
echo 
"$numdecortes<hr>";
while (
each($abrir))
{
$anclahoras 3;
$anclaminutos 3;
$anclasegundos 3;
$horas $cortar[$anclahoras] + $horas;
$minutos $cortar[$anclaminutos] + $minutos;
$segundos $cortar[$anclasegundos] + $segundos;
echo 
"Horas: $horas<br>Minutos: $minutos<br>Segundos: $segundos<br><hr>";
}
?>

Espero que a halguien se lo ocurra como hacerlo, Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #2 (permalink)  
Antiguo 23/08/2003, 11:59
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola Pino,

Bueno, me intriga un poco que los números que das en el ejemplo no son consistentes unos con otros. Por ejemplo, los resultados que produce el código presentado más adelante con las cifras que das al comienzo de tu mensaje son:

Cita:
Horas: 3
Minutos: 202
Segundos: 178
Quizás te he malinterpretado y es otro tipo de cálculo el que produce el resultado "Horas: 3, Minutos 160, Segundos: 120". O quizás haya sido sólo un despiste, no lo sé. :)

En fin, esta es la solución que se me ha ocurrido en principo para el problema que enuncias:

Código:
<?php

$archivo = 'internet.txt';  // Nombre del archivo con los datos

$horas = $minutos = $segundos = 0;

$abrir = fopen ($archivo, 'r');

if (! $abrir) {
    echo "Error al abrir archivo de entrada.\n";
    exit (1);
}

while (! feof ($abrir)) {
    $linea = trim (fgets ($abrir));

    list ($no_usado, $h, $m, $s) = explode (':', $linea);

    $horas    += $h;
    $minutos  += $m;
    $segundos += $s;
}

fclose ($abrir);

echo<<<FIN_RESULTADOS
Horas: $horas<br />
Minutos: $minutos<br />
Segundos: $segundos<br />
<hr />
FIN_RESULTADOS;

?>

Este pequeño ejemplo calcula las sumas totales de las columnas del archivo fuente. Se me ocurre que quizás resulte útil si en lugar de hacer sumas totales de horas, minutos y segundos, estos tres valores son usados para calcular un resultado más legible. Por ejemplo, si el resultado total fuera: 2 horas, 70 minutos, 80 segundos; este valor podría resultar más claro en la forma de: 3 horas, 11 minutos, 20 segundos.

En tal caso, podrían agregarse las siguientes líneas después del ciclo `while' del ejemplo inicial:

Código:
$horas    += floor (($minutos + floor ($segundos / 60)) / 60);
$minutos   = ($minutos + floor ($segundos / 60)) % 60;
$segundos %= 60;
En este caso, por ejemplo, el resultado del que hablé el comienzo se tranformaría en:

Cita:
Horas: 6
Minutos: 24
Segundos: 58
Si te he malinterpretado, y buscas otro tipo de solución, por favor déjame saber. :)

Un cordial saludo
  #3 (permalink)  
Antiguo 24/08/2003, 05:21
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
Hola, gracias por tu codigo voy a probarlo.

Losiento, por lo de la suma, por que puse los numeros a voleo.

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #4 (permalink)  
Antiguo 24/08/2003, 13:02
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años
Puntos: 0
Ohhh gracias, perfecto funciona a la perfección. Gracias

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 08:23.