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 :

json_decode et tableau php


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut json_decode et tableau php
    J'ai un léger souci avec la lecture d'une source JSON, j'utilise pour celà json_decode en passant le paramètre true pour retourner un tableau PHP.
    Toutefois, le tableau qui m'est retourné semble être à plusieurs dimensions ou quelque chose dans le genre et je bloque pour récupérer certaines informations. je vous met mon code php avec une variable qui contient le source 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    <?php
    // Les crochets qui délimitent le JSON indiquent qu'il s'agit d'une collection de données
    $json_source = '[
        {
            "identifier": "120568470",
            "amount": 30.24,
            "payout_type": "percent",
            "mode": "share",
            "currency": "EUR",
            "is_pending": false,
            "locked_at": 1483725042,
            "created_at": 1478946262,
            "conversion_id": {
                "$id": "5826edd6caf95b0a638eb47d"
            },
            "refused_at": null,
            "refuse_reason": null,
            "id": "5826edd6caf95b0a638eb47b",
            "partnership": {
                "id": "57f3da7d665e88c3358bc11e"
            },
            "group": {
                "id": "55c86be6665e8865638b46a0"
            },
            "affiliateProfile": {
                "id": "57f3da7d665e88c3358bc11d",
                "title": "CFC"
            },
            "percent": 33.33,
            "commission": 0.5,
            "referrer": null,
            "cookie": 1478944951,
            "landing_page": "",
            "custom_var": "",
            "cpc": 0,
            "cpc_currency": "EUR",
            "weight": 5,
            "commission_rate": 5,
            "tracking_id": 3,
            "paymentRequest": {
                "id": "58931a63e8face8f3b8b4578",
                "created_at": 1486035554
            }
        },
        {
            "identifier": "120568470",
            "amount": 30.24,
            "payout_type": "percent",
            "mode": "share",
            "currency": "EUR",
            "is_pending": false,
            "locked_at": 1483725042,
            "created_at": 1478946262,
            "conversion_id": {
                "$id": "5826edd6caf95b0a638eb47d"
            },
            "refused_at": null,
            "refuse_reason": null,
            "id": "5826edd6caf95b0a638eb47c",
            "partnership": {
                "id": "57f3da7d665e88c3358bc11e"
            },
            "group": {
                "id": "55c86be6665e8865638b46a0"
            },
            "affiliateProfile": {
                "id": "57f3da7d665e88c3358bc11d",
                "title": "CFC"
            },
            "percent": 33.33,
            "commission": 0.5,
            "referrer": null,
            "cookie": 1478945625,
            "landing_page": "",
            "custom_var": "",
            "cpc": 0,
            "cpc_currency": "EUR",
            "weight": 5,
            "commission_rate": 5,
            "tracking_id": 3,
            "paymentRequest": {
                "id": "58931a63e8face8f3b8b4578",
                "created_at": 1486035554
            }
        }
    ]';
     
    // On va boucler sur un tableau
    $json_data = json_decode($json_source, true);
    foreach($json_data as $v){
       echo $v['amount'].'<br>';
       echo $v['commission'].'<br>';
    }
     
    ?>
    Le code fonctionne parfaitement pour remonter les valeurs "amount" et "commission" mais si je veux remonter conversion_id par exemple celà çà ne marche plus sans doute car c'est un nouveau tableau :
    "conversion_id": {
    "$id": "5826edd6caf95b0a638eb47d"
    },

    Avez vous une idée ?

  2. #2
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut, effectivement $v['conversion_id'] est un tableau avec un seule clé $id .
    Pour récupérer sa valeur $v['conversion_id']['$id'].
    Sinon pour avoir un aperçu de $json_data, faites un var_dump($json_data);, ça vous facilitera les autres récupérations.

    EDIT: Vous pouvez aussi créer un autre fichier y mettre le contenu de votre JSON et faire file_get_contents pour récupérer son contenu.
    json_source = file_get_contents('fichier.json');

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Je viens d'essayer ton code à l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // On va boucler sur un tableau
    $json_data = json_decode($json_source, true);
    foreach($json_data as $v){
       echo $v['amount'].'<br>';
       echo $v['commission'].'<br>';
       echo $v['conversion_id']['$i'];
    }
    j'obtiens un message d'erreur : Notice: Undefined index: $i
    Et çà ne me retourne rien

  4. #4
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    $id pas $i

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Merci. Effectivement je m'étais trompé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] afficher le contenu d'un tableau php
    Par moons dans le forum Langage
    Réponses: 9
    Dernier message: 08/02/2006, 15h12
  2. [PHP-JS] Passer un tableau php en tableau JS
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/12/2005, 11h36
  3. Recuperer un tableau php dans javascript
    Par 17mounir dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2005, 09h07
  4. [DOM XML] XML -> tableau PHP
    Par Mucsy dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 03/06/2005, 11h44
  5. [PHP-JS] Remplir un tableau javascript selon un tableau php
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/01/2005, 14h02

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