PHP: leggere un file .csv e ricavare un array
ATTENZIONE!
Il post ha più di 2 anni e le informazioni contenute
potrebbero essere obsolete (ad esempio a causa di un
aggiornamento di versione rispetto agli elementi descritti
o links modificati da siti esterni).
Una funzione per leggere un file .csv e ricavarne un array:
/**
* Apre un file .csv e ritorna un array.
*
* @param string $filepath Percorso completo del file
*/
function csvToArray($filepath){
setlocale(LC_ALL, 'en_US.UTF-8');
// apertura del file
if (($handle = fopen($filepath, "r")) !== FALSE) {
$nn = 0;
// legge una riga alla volta fino alla fine del file
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// numero di elementi presenti nella riga letta
$num_elementi = count($data);
// popolamento dell'array
for ($x=0; $x<$num_elementi; $x++) {
$csvarray[$nn][$x] = $data[$x];
}
$nn++;
}
// Chiusura del file
fclose($handle);
} else {
echo "File non trovato";
}
return $csvarray;
}
La riga
setlocale(LC_ALL, 'en_US.UTF-8');
deve rispecchiare la codifica con cui è stato salvato il file. Durante la lettura dell'array bisogna tenere in considerazione che la prima colonna corrisponde all'indice 0 dell'array, la seconda all'indice 1 e così via:
$array_csv = csvToArray('percorso/file.csv');
foreach($array_csv as $numero_riga => $valori){
$valore_prima_colonna = $valori[0];
$valore_seconda_colonna = $valori[1];
echo 'riga: '.$numero_riga.' - valori: '.$valore_prima_colonna.' # '.$valore_seconda_colonna;
}

Commenti