Convertire un array in csv con PHP
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 semplice funzione per convertire un array in formato csv, inviando al browser un file oppure direttamente il testo del csv.
La funzione accetta più parametri per personalizzare l'output.
/**
* Converte un array in formato csv.
*
* @param array $array_data Dati in formato array.
* @param string $delimiter Delimitatore di campo (virgola, punto e virgola, ...)
* @param bool $get_file Indica se restituire al browser un file o una stringa.
* @param string $filename Nome del file.
*/
function array_to_csv($array_data = array(), $delimiter = ';', $get_file = TRUE, $filename = 'export.csv')
{
// apertura nuovo file in memoria
$csv = fopen('php://memory', 'w');
// preparazione del file csv, inserendo un array per riga
foreach ($array_data as $csv_line) {
fputcsv($csv, $csv_line, $delimiter);
}
// reset del puntatore del file
fseek($csv, 0);
//se viene richiesto l'output in formato file
if ($get_file == 1) {
// header per invio file
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="' . $filename . '";');
// lettura del file temporaneo e scrittura nell'output buffer (invio al browser)
fpassthru($csv);
exit;
} else {
// se viene richiesto l'output in formato stringa
$output = stream_get_contents($csv);
echo $output;
}
exit;
}
Per utilizzare la funzione:
$test_data = array(
1 => array(
'Mario','Verdi'
),
2 => array(
'Giovanni','Bianchi'
),
3 => array(
'Marco','Rossi'
),
);
array_to_csv($test_data, ';', TRUE, 'nome_custom.csv');
Pulsanti con indicatore di attività per Bootstrap 3
Eseguire una funzione da command line in CodeIgniter
Commenti