Autor Tema: PHP Leer escribir archivos de texto escritura lectura ejemplo funciones CU00836B  (Leído 2496 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hi!

Citar
EJERCICIO
Crea las siguientes funciones en PHP:
a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirTresNumeros que reciba tres números enteros como parámetros y proceda a escribir dichos números en tres líneas en un archivo denominado datosEjercicio.txt. Si el archivo no existe, debe crearlo.
b) Una función denominada obtenerSuma (tipo función, devolverá un valor numérico) que reciba una ruta de archivo como parámetro, lea los números existentes en cada línea del archivo, y devuelva la suma de todos esos números.
c) Una función denominada obtenerArrNum (tipo función, devolverá un array de valores numéricos) que reciba una ruta de archivo como parámetro, lea los números existentes en cada línea del archivo, y devuelva un array cuyo índice 0 contendrá el número existente en la primera línea, cuyo índice 1 contendrá el número existente en la segunda línea y así sucesivamente.
d) Crea código php donde a través de la función escribirTresNumeros escribas en el fichero los números 2, 8, 14. Luego, mediante la función obtenerSuma muestra por pantalla el resultado de sumar los números existentes en el archivo. Finalmente, mediante la función obtenerArrNum obtén el array, recórrelo y muestra cada uno de los elementos del array.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<?php
escribirTresNumeros(2814);
echo 'En primer lugar se llamará a la función escribirTresNumeros, pasándole como parámetros (2, 8, 14).';
echo 'Allí se creará un archivo con nombre datosEjercicio.txt';
echo '<hr>Después llamaremos a la función obtenrSuma a la que pasaremos como parámetro el nombre del del archivo';
echo ' que se creó en la función escribirTresNumeros.';
echo 'El resultado de sumar los tres números del archivo datosEjercicio.txt es: ' obtenerSuma('datosEjercicio.txt');
echo '<hr> Y por último llamaremos a la función obtenerArrNum, pasándole como parámetro el nombre del archivo';
echo ' que se creó en la función escribirTresNumeros. Y nos devolverá los datos que tenga dentro de un array.<br/>';
$arrayNuevo obtenerArrNum('datosEjercicio.txt');
$msg '<br/>El array que devuelve la función obtenerArrNum contiene: <br/>';
for($i=0$i<count($arrayNuevo); $i++) {
$msg $msg 'En el índice ' $i ' tenemos como valor ' $arrayNuevo[$i] . '<br/>';
}
echo $msg;
function escribirTresNumeros($n1$n2$n3) {
$n1 $n1 "\r\n";
$n2 $n2 "\r\n";
$n3 $n3 ;
$fp fopen('datosEjercicio.txt''a');
fputs($fp$n1);
fputs($fp$n2);
fputs($fp$n3);
fclose($fp);
}
function obtenerSuma($nomArchivo){
$fp fopen($nomArchivo'r');
$suma 0;
while(!feof($fp)) {
$linea fgets($fp);
$suma += $linea;
}
return $suma;
}
function obtenerArrNum($nomArchivo){
$fp fopen($nomArchivo'r');
$i 0;
while(!feof($fp)) {
$arrayNum[$i++] = fgets($fp);
}
return $arrayNum;
}
?>

</body>
</html>

http://aprendehtml.byethost3.com/CU00836B/ejercicioCU00836B.php

Saludos. 8)
« Última modificación: 13 de Marzo 2016, 21:00 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola Pedro!

Todo bien viendo algunas observaciones

Quizás yendo en la línea tradicional te recomendaría que hagas la declaración de funciones en la parte inicial del código y luego hagas uso de las mismas. Esto es básicamente un criterio de "mantener el código ordenado evitando declarar y usar funciones en cualquier punto, sino tratar de hacerlo ordenadamente":

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<?php
//PARTE DECLARATIVA
function escribirTresNumeros($n1$n2$n3) {
$n1 $n1 "\r\n";
$n2 $n2 "\r\n";
$n3 $n3 ;
$fp fopen('datosEjercicio.txt''a');
fputs($fp$n1);
fputs($fp$n2);
fputs($fp$n3);
fclose($fp);
}
function obtenerSuma($nomArchivo){
$fp fopen($nomArchivo'r');
$suma 0;
while(!feof($fp)) {
$linea fgets($fp);
$suma += $linea;
}
return $suma;
}
function obtenerArrNum($nomArchivo){
$fp fopen($nomArchivo'r');
$i 0;
while(!feof($fp)) {
$arrayNum[$i++] = fgets($fp);
}
return $arrayNum;
}



//PARTE EJECUTIVA


escribirTresNumeros(4814);
echo 'En primer lugar se llamará a la función escribirTresNumeros, pasándole como parámetros (2, 8, 14).';
echo 'Allí se creará un archivo con nombre datosEjercicio.txt';
echo '<hr>Después llamaremos a la función obtenrSuma a la que pasaremos como parámetro el nombre del del archivo';
echo ' que se creó en la función escribirTresNumeros.';
echo 'El resultado de sumar los tres números del archivo datosEjercicio.txt es: ' obtenerSuma('datosEjercicio.txt');
echo '<hr> Y por último llamaremos a la función obtenerArrNum, pasándole como parámetro el nombre del archivo';
echo ' que se creó en la función escribirTresNumeros. Y nos devolverá los datos que tenga dentro de un array.<br/>';
$arrayNuevo obtenerArrNum('datosEjercicio.txt');
$msg '<br/>El array que devuelve la función obtenerArrNum contiene: <br/>';
for($i=0$i<count($arrayNuevo); $i++) {
$msg $msg 'En el índice ' $i ' tenemos como valor ' $arrayNuevo[$i] . '<br/>';
}
echo $msg;

?>

</body>
</html>

En realidad es típico mantener las funciones en archivos externos, de modo que se pondría la instrucción de carga al principio del archivo para luego hacer uso de ellas.

El código no me funciona bien si lo ejecuto varias veces. Por ejemplo lo ejecuto una primera vez con escribirTresNumeros(2, 8, 14); y en el archivo de datos queda

2

8

14

Lo ejecuto una segunda vez con escribirTresNumeros(4, 8, 14); y en el archivo de datos queda

2

8

144

8

14

De modo que ya los resultados no son correctos en la segunda ejecución

Esto es debido a que el archivo no se está sobreescribiendo

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola César.

Para que se sobrescriba el archivo solo habría que cambiar el modo de apertura del archivo, está  en 'a' y lo he sustituido  'w+' quedando así la linea afectada...


Código: [Seleccionar]
$fp = fopen('datosEjercicio.txt', 'w+');
Gracias por la corrección y los consejos.

Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".