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 certains blocs du json


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut supprimer certains blocs du json
    Bonjour,
    J'ai une variable en 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
    $json = '[
    	{
    	"Quantity": 0,
    	"ID": "014",
    	"Color": "red"
    	},
    	{
    	"Quantity": 10,
    	"ProductID": "015",
    	"Color": "black"
    	},
    	{
    	"Quantity": 25,
    	"ProductID": "018",
    	"Color": "green"
    	},
    	{
    	"Quantity": 0,
    	"ProductID": "045",
    	"Color": "yellow"
        }
    ]';
    Je vais supprimer tous les articles qui ont la quantité "zéro" ["Quantity": 0] pour obtenir cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $json = '[
    	{
    	"Quantity": 10,
    	"ProductID": "015",
    	"Color": "black"
    	},
    	{
    	"Quantity": 25,
    	"ProductID": "018",
    	"Color": "green"
    	}
    ]';
    Et je vais garder les autres. Comment puis-je faire ?
    Je suis un peu bloqué dans mes raisonnements. Voici ce que je fais :
    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
     
    $json = '[
    	{
    	"Quantity": 0,
    	"ID": "014",
    	"Color": "red"
    	},
    	{
    	"Quantity": 10,
    	"ProductID": "015",
    	"Color": "black"
    	},
    	{
    	"Quantity": 25,
    	"ProductID": "018",
    	"Color": "green"
    	},
    	{
    	"Quantity": 0,
    	"ProductID": "045",
    	"Color": "yellow"
        }
    ]';
     
     
     
    $objArray = json_decode($json, true);
    //die(var_dump($obj));
     
    foreach ($objArray as  $objArrayValue) {
     
        foreach ($objArrayValue as $key => $value) {
            // $newArray []=[
            //     $key => [$value]
     
            // ];
     
            $newArray =[
                $key => [$value]
     
            ];
            print_r  ($newArray);
        }
        //print_r ($newArray);
    }
    ////var_dump ($newArray);
    En fait, je n'arrive même pas bien ordonner mon array...

    Est-ce qu'il y a une fonction pour supprimer certains blocs du json sans transformer en tableau (array) ?
    Sinon comment je peux ordonner ma nouvelle tableau et ensuite comment je peux les supprimer ?

    Merci

  2. #2
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    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 : 541
    Par défaut
    Salut,
    Une raison particulière pour éviter la transformation du JSON en tableau ? Parce que je pense que ça sera plus simple comme ça.

  3. #3
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut
    Si je garde mon json sans transformer en tableau comment puis-je supprimer les blocs qui contient la quantité zéro ?

  4. #4
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    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 : 541
    Par défaut
    Pourquoi ne pas le transformer en tableau pour faire cette opération et de transformer ce tableau là en JSON? Une raison particulière ?
    Sinon peut être patienter quelqu'un sortira une expression régulière pour faire le job.

  5. #5
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut
    Je ne comprends pas bien ce que tu veux dire...

    Voici ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach ($objArray as $key => $value) {
        if (in_array($key["Quantity"]=0, $value)) {                    //Warning</b>:  Cannot use a scalar value as an array in 
            unset($objArray[$key]);
        }
    }
    $objArray = json_encode($objArray);
     
     
    die(var_dump($objArray));
    mais il y a des alertes :
    <b>Warning</b>: Cannot use a scalar value as an array in

    Est-ce qu'il y a une autre façon à faire plus simple et plus propre ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Par défaut
    Avec le code suivant,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($objArray as $key => $value) {
        if (in_array("0", $value)) {
            unset($objArray[$key]);
        }
    }
    $objArray = json_encode($objArray);
    j'obtiens quelque chose plus correct :
    "1": {
    "Quantity": 10,
    "ProductID": "015",
    "Color": "black"
    },
    "2": {
    "Quantity": 25,
    "ProductID": "018",
    "Color": "green"
    }
    }
    Mais s'il y a une autre valeur est zéro même si la quantité n'est pas zéro, Php va le supprimer...
    Comment je peux chercher la valeur zéro uniquement dans "Quantity" ?

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

Discussions similaires

  1. [CKEditor] supprimer certaines fonctions
    Par damien40 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 10/04/2007, 17h35
  2. [RegEx] supprimer certaines balises HTML
    Par shinji_rem dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2007, 18h20
  3. supprimer certains caracteres d'une chaine?
    Par insane_80 dans le forum ASP
    Réponses: 5
    Dernier message: 02/03/2007, 13h20
  4. Réponses: 1
    Dernier message: 11/08/2006, 14h55
  5. Supprimer certaines lignes d'un fichier texte
    Par kek_net dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2006, 12h21

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