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 Fusionner 2 valeurs dans une même clé


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut JSON Fusionner 2 valeurs dans une même clé
    Bonjour à tous,

    J'aimerais savoir si il y a une solution pour pouvoir fusionner 2 valeurs d'un fichier JSON dans une même clé. J'ai vu qu'on pouvait utiliser la foncion array_merge mais je suis un peu perdu

    Voici 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
    17
    18
    19
    20
    [
      {
        "event_id": 9172,
        "event_name": "Test event",
        "event_start_date": "12/31/2018",
        "event_start_time": "10:00:AM",
        "event_end_date": "12/31/2018",
        "event_end_time": "03:30:PM",
        "": ""
      },
      {
        "event_id": 9124,
        "event_name": "Téléthon – édition 2018",
        "event_start_date": "12/07/2018",
        "event_start_time": "09:00:AM",
        "event_end_date": "12/09/2018",
        "event_end_time": "11:00:PM",
        "": ""
      }
    ]
    J'aimerais fusionner les valeurs des clé "event_start_date" et "event_start_time" ensemble dans une clé nommé "date" pour avoir :

    "date": "12/31/201810:00:AM"

    Si vous avez des pistes je suis preneur

    Merci d'avance en tout cas.

  2. #2
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Bonjour,

    Il suffit de parcourir ton json sous forme de tableau, concaténer tes cellules et les supprimmer au besoin.
    Voilà un fonction qui le fait :
    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
    <?php
     
    $json = '[
      {
        "event_id": 9172,
        "event_name": "Test event",
        "event_start_date": "12/31/2018",
        "event_start_time": "10:00:AM",
        "event_end_date": "12/31/2018",
        "event_end_time": "03:30:PM",
        "": ""
      },
      {
        "event_id": 9124,
        "event_name": "T&eacute;l&eacute;thon &amp;#8211; &eacute;dition 2018",
        "event_start_date": "12/07/2018",
        "event_start_time": "09:00:AM",
        "event_end_date": "12/09/2018",
        "event_end_time": "11:00:PM",
        "": ""
      }
    ]';
     
    function mergeDate( $json )
    {
        $data = json_decode($json, true);
        foreach( $data as &$value )
        {
            // tu concaténes les champs date ensemble.
            $value[ 'date' ] = $value[ 'event_start_date' ] . $value[ 'event_start_time' ];
            // Tu supprimes au besoin les champs fusionnés.
            unset($value[ 'event_start_date' ], $value[ 'event_start_time' ]);
        }
        return $data;
    }
     
    var_dump(mergeDate($json));
    /*
    Result :
    array (size=2)
      0 => 
        array (size=6)
          'event_id' => int 9172
          'event_name' => string 'Test event' (length=10)
          'event_end_date' => string '12/31/2018' (length=10)
          'event_end_time' => string '03:30:PM' (length=8)
          '' => string '' (length=0)
          'date' => string '12/31/201810:00:AM' (length=18)
      1 => 
        array (size=6)
          'event_id' => int 9124
          'event_name' => string 'T&eacute;l&eacute;thon &amp;#8211; &eacute;dition 2018' (length=54)
          'event_end_date' => string '12/09/2018' (length=10)
          'event_end_time' => string '11:00:PM' (length=8)
          '' => string '' (length=0)
          'date' => string '12/07/201809:00:AM' (length=18)
    */
    Cordialement

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2018
    Messages : 21
    Par défaut
    Merci beaucoup Freudd, ça m'aide beaucoup.

    Sans vouloir abuser une fois mes clés fusionnées, j'aimerais convertir ce format de date : '12/31/201810:00:AM' en un format de date Atom : '2018-12-12T09:08:22+01:00'
    Si tu as une idée sinon c'est déjà gentil d'avoir perdu du temps pour moi

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/12/2009, 14h44
  2. [MySQL] Permutation de deux valeurs dans une même colonne de table
    Par andry.aime dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/01/2009, 14h19
  3. Plusieurs valeurs dans une même cellule
    Par biche1 dans le forum Excel
    Réponses: 4
    Dernier message: 25/09/2008, 16h56
  4. Réponses: 5
    Dernier message: 04/06/2008, 11h03
  5. Réponses: 2
    Dernier message: 16/05/2008, 15h43

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