Formater un tableau PHP en CSV

Comment convertir un tableau PHP dans le format csv ?

PHP dispose nativement de plusieurs fonctions pour manipuler le format CSV : fgetcsv, fputcsv, str_getcsv etc... La fonction str_getcsv est très pratique pour obtenir un tableau PHP à partir d'une ligne formatée en CSV. Malheureusement PHP ne possède pas encore de fonction "str_putcsv" pour faire l'opération inverse : formater un tableau en CSV.

Voici une fonction qui permet cette opération en utilisant les fonctions déjà existantes de PHP. Vous noterez que cette fonction utilise un fichier temporaire que PHP gèrera tout seul.

Convertir un tableau en CSV

function array_to_csv(array $data) { $f = fopen('php://temp/maxmemory:0', 'rw'); /* en-tetes */ fputcsv($f, array_keys(current($data))); /* donnees */ foreach ($data as $row) { fputcsv($f, $row); } rewind($f); $csv = stream_get_contents($f); fclose($f); return $csv; } $data = array( array('colonne1' => 'valeur1', 'colonne2' => 'valeur2'), array('colonne1' => 'valeur3', 'colonne2' => 'valeur4') ); var_dump(array_to_csv($data)); /* string(50) "colonne1,colonne2 valeur1,valeur2 valeur3,valeur4 " */