Autor Tema: Leer escribir archivos de texto, fopen, fgets, fputs, fclose, feof PHP CU00836B  (Leído 3049 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes. Aquí dejo una posible solución del ejercicio CU00836B del curso PHP desde cero.

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.

Código: [Seleccionar]
<?php 

function escribirTresNumeros($a$b$c){

$fp fopen("datosEjercicio.txt""w");
fputs($fp$a."\n".$b."\n".$c);
fclose($fp);

}

escribirTresNumeros(246);

?>

Citar
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ódigo: [Seleccionar]
<?php 

function 
obtenerSuma(){

$fp fopen("datosEjercicio.txt""r");
$contador 0;
$resultado 0
$valor = array();
while(!feof($fp)){
$linea fgets($fp);
$valor[$contador] = $linea;
echo "La línea ".($contador+1)." vale = ".$valor[$contador]."<br>";
$resultado $resultado $valor[$contador];
$contador += 1;
}
fclose($fp);
return $resultado;

}

echo "La suma de las tres líneas es: ".obtenerSuma();

?>

Citar
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.

Código: [Seleccionar]
<?php 

function 
obtenerArrNum($archivo){

$fp fopen($archivo"r");
$valor;
$contador 0;

while(!feof($fp)){
$linea fgets($fp);
$valor[$contador] = $linea;
$contador += 1;
}

fclose($fp);

return $valor;

}

foreach (obtenerArrNum("datosEjercicio.txt") as $indice => $valor) {
echo "El índice ".$indice." contiene: ".$valor."<br>";
}

?>

Citar
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]
<?php 

function 
escribirTresNumeros($a$b$c){

$fp fopen("datosEjercicio.txt""w");
fputs($fp$a."\n".$b."\n".$c);
fclose($fp);

}

escribirTresNumeros(246);


function obtenerSuma(){

$fp fopen("datosEjercicio.txt""r");
$contador 0;
$resultado 0
$valor = array();
while(!feof($fp)){
$linea fgets($fp);
$valor[$contador] = $linea;
echo "La línea ".($contador+1)." vale = ".$valor[$contador]."<br>";
$resultado $resultado $valor[$contador];
$contador += 1;
}
fclose($fp);
return $resultado;

}

echo "La suma de las tres líneas es: ".obtenerSuma()."<br>";

echo "<br><br><br>";

function obtenerArrNum($archivo){

$fp fopen($archivo"r");
$valor;
$contador 0;

while(!feof($fp)){
$linea fgets($fp);
$valor[$contador] = $linea;
$contador += 1;
}

fclose($fp);

return $valor;

}

foreach (obtenerArrNum("datosEjercicio.txt") as $indice => $valor) {
echo "El índice ".$indice." contiene: ".$valor."<br>";
}

?>

Gracias.
« Última modificación: 15 de Mayo 2016, 21:50 por César Krall »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU00836B Leer y escribir archivos de texto con PHP
« Respuesta #1 en: 13 de Mayo 2016, 00:29 »
Hola dimiste.


Lo primero decirte que el ejercicio cumple con lo que pedía el enunciado, solo comentar algunos detalles a mejorar.

Según el enunciado cuando invoquemos la función obtenerSuma había que pasar como parámetro la ruta del archivo, cosa que se te pasó por alto.
En esta función podríamos omitir la variable $valor, puesto que no le vamos a dar ningún uso a los valores que se almacenan en ella. El bucle while podría quedar así:
Código: [Seleccionar]
while(!feof($fp)){
$linea = fgets($fp);
echo "La línea ".(++$contador)." vale = ".$linea."<br>";
$resultado = $resultado + $linea;
}
Y el bucle de la función obtenerArrNum, también se podría abreviar un poco:
Código: [Seleccionar]
while(!feof($fp)){
$valor[$contador++] = fgets($fp);
}

Son detalles que con el tiempo irás perfeccionando.
Enhorabuena por el ejercicio.

Saludos. ;D

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenos días, Pedro.

Gracias por el tiempo dedicado y por corregirme el ejercicio. Y también gracias por decirme esos pequeños detalles, porque pueden parecer pequeños, pero es lo que dices tú, sólo así podré aprender más y perfeccionarme.

Sobre los bucles que me has propuesto, tienes toda la razón, no hace falta que utilice un array (nunca sé si es "una" array o "un" array, jejeje), puesto que la variable $linea cambia de valor en cada pasada del bucle.

Referente a pasarle un enlace como parámetro de la función obtenerSuma(), procedo a la oportuna corrección:



Código: [Seleccionar]
<?php 

function 
obtenerSuma($archivo){

$fp fopen($archivo"r");
$contador 0;
$resultado 0
while(!feof($fp)){
$linea fgets($fp);
echo "La línea ".(++$contador)." vale = ".$linea."<br>";
$resultado $resultado $linea;
}
fclose($fp);
return $resultado;

}

$archivo "datosEjercicio.txt";
echo "La suma de las tres líneas es: ".obtenerSuma($archivo);

?>

Gracias.

 

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".