PHP - Problema al leer fichero .dat

 
Vista:
sin imagen de perfil
Val: 11
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema al leer fichero .dat

Publicado por Nico (6 intervenciones) el 04/10/2018 19:39:46
Hola estoy haciendo un ejercicio en el que necesito leer un archivo que cree tipo .dat con la fecha la hora y la temperatura durante un dia y necesito calcular la media de la temperatura. Consigo leer el fichero pero no consigo calcular la media no se como puedo leer por variables. Adjunto el código.
Este es el código que crea el archivo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
//creo variable con ruta del fichero
$ruta = "temperaturas.dat";
//variable para escribir el fichero
$file = fopen($ruta, "w");
 
 
$fecha = "10_Agosto_2017";
//con el for le doy valores a horas y temperatura y los escribo en el fichero
for ($i = 0; $i < 24; $i++) {
     $horas[i] = $i;
    $temperatura[i] = mt_rand(8, 38);
 
    echo $horas[i]. chr(32).$temperatura[i]. "<br>";
    //escribo fichero
    fwrite($file, $fecha."<br>".$horas[i]."<br>".$temperatura[i]."<br>");
}
//cierro fichero
fclose($file);
echo "Fin del programa";
?>
Este es el código con el que intento leerlo, lo lee bien pero la variable media no hace nada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
//creo variable con ruta
$ruta = "temperaturas.dat";
//excepción por si la ruta no es correcta o el archivo no existe
if (!file_exists($ruta)) {
    exit("El fichero no existe o la ruta no es correcta");
}
//define("SEP_CMPO", "|");
//creo variable para abrir el fichero
$file = fopen($ruta, "r");
 
echo "comienza lectura<br>";
$fecha2;
$hora2;
$temp2;
$media;
 
while ($linea = fscanf($file, "%s\t%d\t%d\n")) {
 
    list ($fecha2, $hora2, $temp2) = $linea;
    $media= $temp2 +$media;
    echo  $fecha2.$hora2. $temp2."<br>";
    echo "temperatura"."{$linea[2]}";
 
}
echo "<br> media".$media;
/*
la variable $media no devuelve nada
*/
//cierro fichero
fclose($file);
 
echo "Fin del programa";
?>
Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema al leer fichero .dat

Publicado por xve (6935 intervenciones) el 04/10/2018 20:30:54
Hola Nico, nos podrías mostrar unas lineas del archivo temperaturas.dat? para ver que puede estar pasando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema al leer fichero .dat

Publicado por Nico (6 intervenciones) el 05/10/2018 14:20:53
Hola xve!
Esto es lo que muestro el archivo .dat que escribe. Deberia de usar chr(10) y chr(13) para el salto de línea? o no tiene que ver.
10_Agosto_2017<br>0<br>28<br>10_Agosto_2017<br>1<br>21<br>10_Agosto_2017<br>2<br>12<br>10_Agosto_2017<br>3<br>36<br>10_Agosto_2017<br>4<br>11<br>10_Agosto_2017<br>5<br>25<br>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema al leer fichero .dat

Publicado por xve (6935 intervenciones) el 05/10/2018 15:01:46
Entiendo que en el archivo solo hay una linea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema al leer fichero .dat

Publicado por Nico (6 intervenciones) el 05/10/2018 14:33:34
He probado con chr(10) y chr(13) y el archivo queda mejor:
10_Agosto_2017
0
23
10_Agosto_2017
1
36
10_Agosto_2017
2
10
10_Agosto_2017
3
16
Pero sigo sin poder sacar la media
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema al leer fichero .dat

Publicado por xve (6935 intervenciones) el 05/10/2018 15:08:46
Si, si, mejor así, ya que de la otra manera, no se generan lineas...

Pero, por lo que veo, tu buscas los valores separados por tabuladores aquí:
1
fscanf($file, "%s\t%d\t%d\n"))


te he modificado el programa y el archivo temperaturas.dat

temperaturas.dat
1
2
3
4
10_Agosto_2017  0   23
10_Agosto_2017  1   36
10_Agosto_2017  2   10
10_Agosto_2017  3   16

archivo .php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
//creo variable con ruta
$ruta = "temperaturas.dat";
//excepción por si la ruta no es correcta o el archivo no existe
if (!file_exists($ruta)) {
    exit("El fichero no existe o la ruta no es correcta");
}
//define("SEP_CMPO", "|");
//creo variable para abrir el fichero
$file = fopen($ruta, "r");
 
echo "comienza lectura<br>";
$fecha2;
$hora2;
$temp2;
$media=0;
$contandor=0;
 
while ($linea = fscanf($file, "%s\t%d\t%d\n")) {
 
    list ($fecha2, $hora2, $temp2) = $linea;
    $media+=$temp2;
    $contador++;
    echo  $fecha2.$hora2.$temp2."<br>";
    echo "temperatura ".$temp2;
    echo "<hr>";
}
echo "<br> media".($media/$contador);
/*
la variable $media no devuelve nada
*/
//cierro fichero
fclose($file);
 
echo "<br>Fin del programa";
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema al leer fichero .dat

Publicado por Nico (6 intervenciones) el 05/10/2018 17:28:13
Muchas gracias! Justo después de modificar el archivo .dat me di cuenta de la interpretación que hace la funcion fscanf y he escrito la fecha sin el guión bajo y he puesto --> list ($fecha1,$fecha2,$fecha3, $hora2, $temp2) = $linea;
Gracias xve, un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar