IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Convertir json en csv avec array_merge


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Décembre 2020
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Convertir json en csv avec array_merge
    Bonjour,

    Ultra débutant en PHP, je suis coincé pour exploiter un retour en json et le transformer en CSV.

    J'ai trouvé pas mal de sites avec des exemples de codes mais rien ne fonctionne. J'ai le plus souvent un problème avec array_merge(): Warning: array_merge(): Expected parameter 2 to be an array, int given in....

    Voici un extrait de mon objet json:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    {
        "orders": [{
            "id": 53684GGD83,
            "price": 990,
            "taxes": [{
                "rate": 1000,
                "name": "10.00%",
                "amount": 90,
                "inc_tax": 990,
                "exc_tax": 900
            }],
        },
    etc....

    Je veux mettre dans un CSV uniquement les lignes de niveau 1, c'est à dire pas

    id | price
    53684GGD83 9.90


    J'ai essayé différents scripts, sans succès. Le dernier qui me produit la même erreur avec array_merge est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    function jsonToCSV($json,$cfilename)
    {
        $data = json_decode($json, true);
        $fp = fopen($cfilename, 'w');
        $header = false;
        foreach ($data as $row)
        {
            if (empty($header))
            {
                $header = array_keys($row);
                fputcsv($fp, $header);
                $header = array_flip($header);
            }
            fputcsv($fp, array_merge($header, $row));
        }
        fclose($fp);
        return;
    }

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    montrez nous ce que donne l'affichage du contenu des variables.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Décembre 2020
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Dans $data j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(2) { ["orders"]=> array(1) { [0]=> array(6) { ["id"]=> int(22476) ["price"]=> int(1290) ["contents"]=> array(0) { } ["taxes"]=> array(1) { [0]=> array(4) { ["rate"]=> int(1000) ["name"]=> string(6) "10.00%" ["amount"]=> int(117) ["amountExcludingTax"]=> int(1173) } } ["delivery_started"]=> NULL ["customer"]=> NULL } } ["errno"]=> int(0) }
    un exemple de ce que contient $header:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(1) { [0]=> int(0) }
    je suis parti d'un unique élément dans mon fichier json:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    {
        "orders": [{
                "id": 22476,
                "price": 1290,
                "contents": [],
                "taxes": [{
                    "rate": 1000,
                    "name": "10.00%",
                    "amount": 117,
                    "amountExcludingTax": 1173
                }],
            "delivery_started": null,
            "customer": null
        }],
        "errno": 0
    }

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    votre erreur vient du "errno" à la fin.
    dans votre fichier CSV vous voulez peut-être uniquement les commandes donc il faut boucler sur $data["orders"]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Décembre 2020
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci pour votre aide. En bouclant sur "orders" j'ai pu m'en sortir.

Discussions similaires

  1. [XL-2010] Convertir plusieurs fichiers excel en csv avec des guillemets
    Par karido-74 dans le forum Macros et VBA Excel
    Réponses: 41
    Dernier message: 29/01/2014, 18h32
  2. Convertir JSON en .CSV
    Par Gaetch dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 07/06/2012, 13h35
  3. Convertir un fichier CSV avec l'interop d'Excel - .Net
    Par bliss190 dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 29/10/2010, 08h12
  4. Réponses: 4
    Dernier message: 29/06/2009, 22h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo