Autor Tema: PHP. Lectura y escritura archivos txt, fwrite, PHP_EOL salto de linea. CU00837B  (Leído 10721 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes.

Expongo una posible solución del ejercicio CU00387B del curso PHP desde cero.

Citar
EJERCICIO

Crea el siguiente código PHP:

a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirNumerosMod que reciba dos parámetros: un array de valores enteros y una cadena de texto que puede ser "sobreescribir" ó "ampliar". La función debe proceder a: escribir cada uno de los números que forman el contenido del array en una línea de un archivo datosEjercicio.txt usando el modo de operación que se indique con el otro parámetro. Si el archivo no existe, debe crearlo.

Ejemplo: El array que se pasa es $numeros = array(5, 9, 3, 22); y la invocación que se utiliza es escribirNumerosMod($numeros, "sobreescribir"); En este caso, se debe eliminar el contenido que existiera previamente en el archivo y escribir en él 4 líneas, cada una de las cuales contendrá los números 5, 9, 3 y 22.

Código: [Seleccionar]
<?php 

$numeros = array(59322);
$sobreescribir "w";

function escribirNumerosMod($numeros$sobreescribir){

$file fopen("datosEjercicio01.txt"$sobreescribir);
foreach($numeros as $arreglo){
fwrite($file$arreglo.PHP_EOL);
}
fclose($file);

}

escribirNumerosMod($numeros$sobreescribir);

?>

Citar
b) Una función (tipo procedimiento, no hay valor devuelto) denominada leerContenidoFichero que reciba como parámetro la ruta del fichero y muestre por pantalla el contenido de cada una de las líneas del fichero.

Código: [Seleccionar]
<?php 

$enlace "datosEjercicio01.txt";

function leerContenidoFichero($enlaceDelFichero){

$file fopen($enlaceDelFichero"r");
while(!feof($file)){
$linea fgets($file)."<br>";
echo $linea;
}

}

leerContenidoFichero($enlace);

?>

Citar
c) Crea código php donde a través de la función escribirNumerosMod escribas en el fichero los números 2, 8, 14. Luego, mediante la función leerContenidoFichero muestra el contenido del fichero. Ahora con la función escribirNumerosMod amplía el contenido del fichero y añádele los números 33, 11 y 16. Muestra nuevamente el contenido del fichero por pantalla. Finalmente, escribe el fichero pasándole un array con los número 4, 99, 12 y parámetro <<sobreescribir>> para eliminar los datos que existieran previamente. Muestra el contenido del fichero por pantalla y un mensaje de despedida.

Código: [Seleccionar]
<?php 

$numeros = array(2814);
$sobreescribir "w";
$anyadir "a";

function escribirNumerosMod($numeros$anyadir){

$file fopen("datosEjercicio02.txt"$anyadir);
foreach($numeros as $arreglo){
fwrite($file$arreglo.PHP_EOL);
}
fclose($file);

}

escribirNumerosMod($numeros$anyadir);

$enlace "datosEjercicio02.txt";

function leerContenidoFichero($enlaceDelFichero){

$contador 1;
$file fopen($enlaceDelFichero"r");
while(!feof($file)){
$linea fgets($file);
echo "La línea ".$contador." contiene: ".$linea."<br>";
$contador += 1;
}

}

leerContenidoFichero($enlace);

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

$numeros = array(331116);

escribirNumerosMod($numeros$anyadir);

leerContenidoFichero($enlace);

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

$numeros = array(4912);

escribirNumerosMod($numeros$sobreescribir);

leerContenidoFichero($enlace);

echo "<br><br><br>Gracias por utilizar nuestra aplicación!!!";

?>

Gracias.
« Última modificación: 13 de Mayo 2016, 19:34 por pedro,, »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU00837B fwrite en PHP
« Respuesta #1 en: 13 de Mayo 2016, 19:32 »
Hola dimiste.

En todas las soluciones que propusiste, añades una linea de más al archivo txt y te muestra por pantalla lo siguiente:

Citar
La línea 1 contiene: 2
La línea 2 contiene: 8
La línea 3 contiene: 14
La línea 4 contiene: 2
La línea 5 contiene: 8
La línea 6 contiene: 14
La línea 7 contiene:



La línea 1 contiene: 2
La línea 2 contiene: 8
La línea 3 contiene: 14
La línea 4 contiene: 2
La línea 5 contiene: 8
La línea 6 contiene: 14
La línea 7 contiene: 33
La línea 8 contiene: 11
La línea 9 contiene: 16
La línea 10 contiene:



La línea 1 contiene: 4
La línea 2 contiene: 9
La línea 3 contiene: 12
La línea 4 contiene:



Gracias por utilizar nuestra aplicación!!!

El apartado a, cita que se debe pasar como parámetro  "sobreescribir" ó "ampliar", tu mandas directamente  "w", que no está mal, pero me imagino que la propuesta del ejercicio no es para que hagamos las cosas fáciles sino que veamos maneras distintas de solucionar un problema y complicar lo evidente.

Es poco lo que hay para corregir, pero ya te dí algo de trabajo.

Saludos. ;D

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes, Pedro.

Gracias por corregirme el ejercicio y por el tiempo dedicado.

No sé cómo mandé el ejercicio, pero releyendo mi ejercicio, en el apartado a) expongo como código:

Código: [Seleccionar]
<?php 

$numeros = array(59322);
$sobreescribir "w";

function escribirNumerosMod($numeros$sobreescribir){

$file fopen("datosEjercicio01.txt"$sobreescribir);
foreach($numeros as $arreglo){
fwrite($file$arreglo.PHP_EOL);
}
fclose($file);

}

escribirNumerosMod($numeros$sobreescribir);

?>

Creo que de la manera:

Código: [Seleccionar]
escribirNumerosMod($numeros, $sobreescribir);

function escribirNumerosMod($numeros, $sobreescribir){

$file = fopen("datosEjercicio01.txt", $sobreescribir);
foreach($numeros as $arreglo){
               //código.....


ya estoy pasando como parámetro la instrucción "w".

Sobre la segunda cuestión que mencionas, tienes razón. He corregido el código del tercer apartado del ejercicio y queda de la siguiente manera:

Código: [Seleccionar]
<?php 

$numeros = array(2814);
$sobreescribir "w";
$anyadir "a+";


function escribirNumerosMod($numeros$anyadir){


$file fopen("datosEjercicio02.txt"$anyadir);
$contador 1;

foreach($numeros as $arreglo){

if(fgets($file) && $contador == 1){
fwrite($filePHP_EOL.$arreglo.PHP_EOL);
}else if($contador == count($numeros)){
fwrite($file$arreglo);
}else{
fwrite($file$arreglo.PHP_EOL);
}

$contador++;

}

fclose($file);

}

escribirNumerosMod($numeros$anyadir);

$enlace "datosEjercicio02.txt";

function leerContenidoFichero($enlaceDelFichero){

$contador 1;
$file fopen($enlaceDelFichero"r");
while(!feof($file)){
$linea fgets($file);
echo "La línea ".$contador." contiene: ".$linea."<br>";
$contador += 1;
}

}

leerContenidoFichero($enlace);

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

$numeros = array(331116);

escribirNumerosMod($numeros$anyadir);

leerContenidoFichero($enlace);

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

$numeros = array(4912);

escribirNumerosMod($numeros$sobreescribir);

leerContenidoFichero($enlace);

echo "<br><br><br>Gracias por utilizar nuestra aplicación!!!";

?>

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