¿Puede alguien proporcionar amablemente un código para crear una matriz a partir de un archivo CSV usando fgetcsv?
He usado el siguiente código para crear una matriz a partir de un archivo CSV simple, pero no funciona bien cuando uno de mis campos tiene varias comas, como direcciones.
$lines =file('CSV Address.csv');
foreach($lines as $data)
{
list($name[],$address[],$status[])
= explode(',',$data);
}
* Además, str_getcsv no es compatible con mi servicio de alojamiento.
El código anterior no funciona con el siguiente ejemplo de archivo CSV. La primera columna es el nombre, la segunda columna es la dirección, la tercera columna es el estado civil.
Scott L. Aranda,"123 Main Street, Bethesda, Maryland 20816",Single
Todd D. Smith,"987 Elm Street, Alexandria, Virginia 22301",Single
Edward M. Grass,"123 Main Street, Bethesda, Maryland 20816",Married
Aaron G. Frantz,"987 Elm Street, Alexandria, Virginia 22301",Married
Ryan V. Turner,"123 Main Street, Bethesda, Maryland 20816",Single
Respuestas:
Como dijiste en tu título, fgetcsv es el camino a seguir. Es bastante fácil de usar.
Querrá poner más verificación de errores allí en caso de que
fopen()
falle, pero esto funciona para leer un archivo CSV línea por línea y analizar la línea en una matriz.fuente
list($names[], $addresses[], $statuses[]) = $line;
Creo que la sintaxis str_getcsv () es mucho más limpia, tampoco requiere que el CSV se almacene en el sistema de archivos.
O para una solución línea por línea:
O para una solución línea por línea sin str_getcsv ():
fuente
He creado una función que convertirá una cadena csv en una matriz. La función sabe cómo escapar de los caracteres especiales y funciona con o sin caracteres delimitados.
¡Lo probé con su muestra de csv y funciona como se esperaba!
fuente
fuente
Pregunta antigua, pero aún relevante para los usuarios de PHP 5.2. str_getcsv está disponible desde PHP 5.3. Escribí una pequeña función que funciona con fgetcsv.
A continuación se muestra mi función de https://gist.github.com/4152628 :
Devoluciones
Comenzar a leer CSV
fuente
Prueba esto..
fuente
Esta función devolverá una matriz con valores de encabezado como claves de matriz.
fuente
Para obtener una matriz con las claves correctas, puede intentar esto:
fuente
Encuentre debajo un enlace a la función de @knagode, mejorado con un parámetro de omisión de filas. https://gist.github.com/gabrieljenik/47fc38ae47d99868d5b3#file-csv_to_array
fuente
Se me ocurrió este código bastante básico. Creo que podría ser útil para cualquiera.
fuente
Si desea que cada línea esté en una matriz y cada celda de la línea en una matriz:
fuente
Prueba este código:
fuente
fuente
fuente