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 :

supprimer un json dans un array json


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut supprimer un json dans un array json
    Bonjour,

    J'ai beau chercher je ne trouve pas : comment supprimer une donnée json perdue dans un array de json.

    Voici a quoi ressemble mon 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
     
     
    [
       { "nom" : "bidule", "array" : [ 
            { "nom" : "enfantdebidule", "array" : [
                  { "nom" : "enfantdelenfantdebiudule", array : [ ] 
            ]}, 
             { "nom" :"enfant2debidule", "array" : [
     
          ]}
       ]},
       { "nom" : "chouette", "array" : [
     
       ]}
    ]
    Mon but serait par exemple de supprimer la donnée avec le nom "enfantdelenfantdebidule".

    Je voulais savoir si à tout hasard il existait pas une fonction pour ça ou une methode ?

    Sans quoi je suis en train de bidouiller une fonction, le pb est que si je passe un array d'array en paramètre, il semblerait que le array de base ne soit pas pris en compte et donc si j'utilise unset, celà ne produit pas de changement...

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 894
    Points : 6 648
    Points
    6 648
    Par défaut
    1. Tu décodes ton json avec json_decode (deuxième paramètre à true).
    2. [EDIT]Tu parcours les feuilles du tableau multidimensionnel obtenu avec array_walk_recursive. Dans la fonction de callback, lorsque la clef avec la valeur que tu cherches est atteinte, tu l'élimines avec unset()[/EDIT] Non, ça ne marchera pas, il faut faire une fonction récursive qui parcourt tout le tableau avec comme particularité de prendre en paramètre non pas un tableau mais une référence sur ce tableau:
      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
      function walk(&$arr) {
          static $remove = false;
       
          foreach ($arr as $k => &$v) {
              if ( is_array($v) ) {
                  walk($v);
       
                  if ( $remove ) {
                      unset($arr[$k]);
                      $remove = false;
                  }
              }
              elseif ( $k === 'nom' && $v === 'enfantdelenfantdebidule' ) {
                  $remove = true;
                  return;
              }
          }
      }
    3. Tu réencode le tableau avec json_encode


    Merci de fournir un exemple JSON valide la prochaine fois.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut

    merci !
    Vraiment top !

    J'avais oublié qu'il y avait les références en PHP !

    En réutilisant l'algo avec la ref ça marche.

    Désolé si l'exemple était invalide c'était pour montrer l'esprit.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/11/2019, 10h45
  2. Réponses: 0
    Dernier message: 12/04/2017, 13h40
  3. supprimer instance stockée dans un array
    Par Invité dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 11/10/2013, 15h01
  4. Supprimer une ligne dans un array
    Par Orel01 dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/12/2009, 22h34
  5. [Tableaux] Supprimé doublon dans un array
    Par arnaudperfect dans le forum Langage
    Réponses: 9
    Dernier message: 13/02/2008, 09h38

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