Otra vez más, con PHP tenemos también una utilidad, herramienta, librería, función, o como queramos llamarle.. para hacernos más fácil la vida diaria al programar con PHP.
De igual manera que podemos leer o escribir en un fichero de texto, también podemos leer o escribir línea a línea en ficheros estándar CSV. Los ficheros CSV son los llamados ficheros de valores separados por comas. Dentro se ordenan fila a fila listas de elementos separados por comas, como su nombre indica.
Todo ésto lo podemos manejar con el uso general de un fichero abriendo y cerrando ficheros como veniamos haciendo con fopen y fclose. Y ahora usaremos fgetcsv o fputcsv para leer línea a línea del fichero. Dejemos de tanto hablar de lo mismo y vamos a ver un ejemplo..
Supongamos que tenemos el siguiente fichero:
21,89,7,16,76,18,52,51,58,52
80,3,20,6,83,64,21,73,14,80
7,30,23,75,71,9,96,56,47,25
Tenemos 3 filas de 10 elementos separados por comas.
Supongamos ahora que tenemos el siguiente código PHP:
<?php $fichero = 'nombreFichero.csv'; // si el fichero lo abrimos para leer correctamente if (($manejador = fopen ( $fichero, "r" )) !== FALSE) { echo "Leyendo el fichero: <br>n"; // leemos hasta que se acaba fila a fila while ( ($arrayFila = fgetcsv ( $manejador, 1000, "," )) !== FALSE ) { // escribimos cada fila por pantalla for($i = 0; $i < count ( $arrayFila ); $i ++) { echo $arrayFila [$i] . " - "; } echo "<br>n"; } fclose ( $manejador ); } if (($manejador = fopen ( $fichero, "w" )) !== FALSE) { echo "Escribiendo en el fichero: <br>n"; // escribimos 3 filas for($i = 0; $i < 3; $i ++) { $arrayFila = null; // de 10 elementos cada fila for($j = 0; $j < 10; $j ++) { // llenamos con números aleatorios $arrayFila [$j] = rand ( 1, 100 ); } echo var_dump($arrayFila) . "<br>n"; fputcsv ( $manejador, $arrayFila, "," ); } fclose ( $manejador ); } ?>
Si lo ejecutamos veremos por pantalla lo siguiente en un navegador:
Leyendo el fichero:
21 – 89 – 7 – 16 – 76 – 18 – 52 – 51 – 58 – 52 –
80 – 3 – 20 – 6 – 83 – 64 – 21 – 73 – 14 – 80 –
7 – 30 – 23 – 75 – 71 – 9 – 96 – 56 – 47 – 25 –
Escribiendo en el fichero:
array (size=10) 0 => int 8 1 => int 71 2 => int 98 3 => int 71 4 => int 26 5 => int 96 6 => int 3 7 => int 54 8 => int 9 9 => int 51
array (size=10) 0 => int 77 1 => int 6 2 => int 73 3 => int 65 4 => int 83 5 => int 7 6 => int 11 7 => int 83 8 => int 61 9 => int 25
array (size=10) 0 => int 78 1 => int 13 2 => int 71 3 => int 31 4 => int 22 5 => int 44 6 => int 92 7 => int 89 8 => int 43 9 => int 77
También podemos ejecutarlo desde línea de comandos con ‘php nombrefichero.php’, para los que no tengan instalado un servidor web.
Espero que sirva para aclarar alguna cosa que no se explique en la documentación oficial, o por lo menos haya quedado más simple.
Un saludo.
Documentación oficial: http://php.net/manual/es/function.fgetcsv.php