PHP : formater un tableau en CSV

Comment convertir un tableau PHP dans le format csv ?

12 octobre 2014

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
"
*/

A bientôt !

Par
Créateur et administrateur.

Dans la même catégorie

Formater un tableau pour CURLOPT_POSTFIELDS
Email avec pièce jointe en PHP
PHP : modifier les attributs privés d'un objet
Tester l'existence d'un fichier dans l'include path
Convertir récursivement un objet PHP en tableau
Comment envoyer un mail en ligne de commande ?
RSYNC : Comment synchroniser des fichiers à travers une connexion ssh ?
Exécuter un code PHP en ligne de commande
Doctrine 2 : générer les classes PHP depuis la base de données
Comment catcher les erreurs en PHP ?
Doctrine 2 : comment afficher la requête SQL ?
Comment construire une URL sans caractères spéciaux en PHP ?
Comment lister les fichiers PHP inclus sur ma page ?
Les fonctions anonymes récursives en PHP
Requête HTTP asynchrone en PHP
La résolution statique à la volée ou Late Static Bindings
Trouver les jours fériés français en PHP
Comment allumer son ordinateur à distance en PHP ?
Comment utiliser la balise meta viewport ?
Une version mobile de mon site avec le Zend Framework
Doctrine et le Zend Framework : Présentation, intégration et utilisation
Créer son flux RSS simplement avec Zend_Feed
Appliquer un layout sur un mail avec le Zend Framework
Comment lancer une requête multi-bases avec les fonctions MySQL ?
Implode / Explode : Du tableau à la chaine de caractères, de la chaine de caractères au tableau

Commentaire(s)