Ecco un codice per leggere un file CSV in PHP e convertirlo in un array multidimensionale.
Prendo un classico file CSV, di cui per esempio mostro di seguito le prime 4 righe:
2018-10-05 05:54;45334;57732;22;
2018-10-05 05:55;45334;57732;22;
2018-10-05 05:56;45335;57733;22;
2018-10-05 05:57;45335;57733;22;
in cui ogni riga è formata da più campi separati da un punto e virgola (;). In PHP:
$fileName = "nome_del_file.csv"; //questo è il nome del file da caricare
$csvData = file_get_contents($fileName);
$Data = str_getcsv($csvData, "\n"); //scansiono le righe
foreach($Data as &$Row) {
$Row = str_getcsv($Row, ";"); //scansiono gli elementi in ogni riga, separati dal punto e virgola
}
Ora posso accedere a ogni elemento di ogni riga direttamente dalla variabile $Data, ad esempio $Data[0][1] (riga 0 posizione 1) conterrà il valore 45334. Eseguendo il comando print_r($Data) posso stampare a schermo per debug il contenuto dell’array, come mostrato qui sotto:
Array
(
[0] => Array
(
[0] => 2018-10-05 05:54
[1] => 45334
[2] => 57732
[3] => 22
)
//ecc...
Nel caso il separatore non sia il punto e virgola ma la virgola è sufficiente cambiarlo nell’istruzione:
$Row = str_getcsv($Row, ";");
che, nel caso della virgola usata come separatore, diventa:
$Row = str_getcsv($Row, ",");