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 :

Obj et tableaux


Sujet :

Langage PHP

  1. #1
    rib
    rib est déconnecté
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Points : 55
    Points
    55
    Par défaut Obj et tableaux
    bonjours, je transmet un json via ajax a un fichier php
    ce fichier php décode le json et doit reconstruire un array (key,valeur) des données contenu dans le json.

    mais je n'arrive pas a récupérer la key après le json_decode.

    voila mon code de test:

    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
    <?php 
    define ('ASSASSIN_ROOT', './');
    $assassin_root = ASSASSIN_ROOT;
    ?>
     
    <script type="text/javascript" src="<?php echo $assassin_root; ?>js/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="<?php echo $assassin_root; ?>js/jquery.json.js"></script>
     
    <script>
    // test variables
    var obj = {id_div:'test',json:'this is a test json property',xml:'this is a test xml property'};
    // encoding an object
    var a = $.JSON.encode(obj);
     
    $.ajax({
    				type: 'GET',
    				url:'Load_2.php',
    				data:{json: a},
    				success: function(html) {
    	       		 $('#'+a.id_div).html(html);
    				},
    				async: false
    			});
    </script>
     
    <div id="test">
    </div>
    le fichier ki doit traiter le 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
    <?php
    define ('ASSASSIN_ROOT', './');
    require_once ASSASSIN_ROOT.'commun.php';
     
    // L'objet user, démarrage de la session utilisateur
    $user = new AeUser();
    $user->session_begin();
    $assassin_root = ASSASSIN_ROOT;
     
    function wrap_tpl ($data , $template) {
     
        extract($data);
        ob_start();
        include $template;
        $layout_content = ob_get_contents();
        ob_end_clean();
     
        return $layout_content;
    }
     
     
    if ( $_SERVER['REQUEST_METHOD'] == 'GET' ) {
     
    $data=array();
     
    if($_GET['json']){
    $json = $_GET['json'];
    $obj = json_decode($json);
    foreach ($obj as $json_variables){
    	array_push($data, array($json_variables => $json_variables));
    }
    }
     
     
    print_r ($data); 
    //var_dump(json_decode($json, true));
     
    //echo wrap_tpl ($data , $template);
     
    }
    ?>
    voici la réponse de ce fichier:

    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
    Array
    (
        [0] => Array
            (
                [test] => test
            )
     
        [1] => Array
            (
                [this is a test json property] => this is a test json property
            )
     
        [2] => Array
            (
                [this is a test xml property] => this is a test xml property
            )
     
    )
    comment puis-je remplacer [test] par [id_div] par exemple.

    si quelqu'un pourrait m'aiguiller sur la solution sa m'aiderait bien.
    merci d'avance.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Tu as oublié de spécifier la clé dans le foreach:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($obj as $json_key => $json_variables){
    	$data[] = array($json_key => $json_variables);
    }

  3. #3
    rib
    rib est déconnecté
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 70
    Points : 55
    Points
    55
    Par défaut
    avec sa j'obtient:

    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
    Array
    (
        [0] => Array
            (
                [id_div] => test
            )
     
        [1] => Array
            (
                [template] => test2.php
            )
     
        [2] => Array
            (
                [test] => ceci est un test
            )
     
    )
    serait til possible d'obtenir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Array
    (
        [id_div] => test
        [template] => test2.php
        [test] => ceci est un test
    )
    ou sinon comment puis-je acceder a $data['id_div'].
    merci d'avance.

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Etant donné que c'est un tableau associatif que tu souhaite, et bien la fonction json_decode() le permet (au lieu d'avoir un Objet), suffit de mettre TRUE en 2ème argument :
    mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
    Exemple de la doc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Contenu du JSON
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
     
     
    var_dump(json_decode($json, true));
    Affichera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    array(5) {
        ["a"] => int(1)
        ["b"] => int(2)
        ["c"] => int(3)
        ["d"] => int(4)
        ["e"] => int(5)
    }
    Ce qui permettra d'accéder directement aux clés.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/08/2003, 18h04
  2. free sur des tableaux "a moitié dynamiques"
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 31/07/2003, 15h30
  3. [langage] erreurs utilisation tableaux 2 dimensions
    Par drosof dans le forum Langage
    Réponses: 11
    Dernier message: 01/07/2003, 11h44
  4. Réponses: 6
    Dernier message: 04/04/2003, 15h28
  5. Les tableaux en PL/SQL
    Par GRUMLY dans le forum PL/SQL
    Réponses: 5
    Dernier message: 12/08/2002, 18h10

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