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

JavaScript Discussion :

Tableaux plusieurs dimensions


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 151
    Par défaut Tableaux plusieurs dimensions
    Bonjour
    Voici la structure du tableau . C'est un tableau php je je rapatrie avec cette fonction php2js :

    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
       <?php
        /*
        C'est ce qu'on appelle de "L'extrem programming", c'est à dire du code craché en 20 minutes... n'y perdez pas vos yeux ;)
        ...
        Le but :
        transformer un tableau PHP, même mutli-dimensionnel, en un tableau JS
        !!! Ce tableau ne doit pas contenir d'objet ou ressource PHP !!! (pas de contrôle, mais le script JS plantera)
        En entree :
        (array) $php_array => le tableau PHP à traduire en JS
        (STRING) $js_array_name => le nom du tableau JS qui sera construit
        En sortie :
        (string) => le script JS permettant la construction du tableau
        En cas d'errur :
        retourne FALSE et une erreur de type E_USER_NOTICE est generée
        */
        function php2js( $php_array, $js_array_name ) {
        // contrôle des parametres d'entrée
        if( !is_array( $php_array ) ) {
        trigger_error( "php2js() => 'array' attendu en parametre 1, '".gettype($array)."' fourni !?!");
        return false;
        }
        if( !is_string( $js_array_name ) ) {
        trigger_error( "php2js() => 'string' attendu en parametre 2, '".gettype($array)."' fourni !?!");
        return false;
        }
        // Création du tableau en JS
        $script_js = "var $js_array_name = new Array();\n";
        // on rempli le tableau JS à partir des valeurs de son homologue PHP
        foreach( $php_array as $key => $value ) {
        // pouf, on tombe sur une dimension supplementaire
        if( is_array($value) ) {
        // On va demander la création d'un tableau JS temporaire
        $temp = uniqid('temp_'); // on lui choisi un nom bien barbare
        $t = php2js( $value, $temp ); // et on creer le script JS
        // En cas d'erreur, remonter l'info aux récursions supérieures
        if( $t===false ) return false;
        // Ajout du script de création du tableau JS temporaire
        $script_js.= $t;
        // puis on applique ce tableau temporaire à celui en cours de construction
        $script_js.= "{$js_array_name}['{$key}'] = {$temp};\n";
        }
        // Si la clef est un entier, pas de guillemets
        elseif( is_int($key) ) $script_js.= "{$js_array_name}[{$key}] = '{$value}';\n";
        // sinon avec les guillemets
        else $script_js.= "{$js_array_name}['{$key}'] = '{$value}';\n";
        }
        // Et retourn le script JS
        return $script_js;
        }
        // fin de la fonction php2js
        // pour le test, je defini un tableau PHP bien galère...
        $arr = array('salut'=>'bonjour',
        'pouet'=>'truc',
        'mutli'=>array('truc'=>'chose',
        'bidule'=>'chouette',
        'triple'=>array('hop'=>'la',
        'you'=>'pi')
        ),
        'piege'=>array(5=>'cinq',6=>'six',7=>'sept')
        );
        ?>
        <html>
        <head>
        <script type="text/javascript">
        <!--
        // création du tableau JS ici
        <?php echo php2js($arr,'arr');?>
        -->
        </script>
        </head>
        <body>
        <h1>Préparation du test</h1>
        <pre>
        ### Le tableau PHP devant etre copie en JS ###
        <?php print_r($arr);?>
        ### Le script construisant l'homologue JS du tableau PHP ###
        <?php echo php2js($arr,'arr');?>
        </pre>
        <h1>Le test</h1>
        <script type="text/javascript">
        <!--
        // Verification de la bonne création du tableau...
        document.write("arr['mutli']['triple']['hop'] = "+arr['mutli']['triple']['hop'] + '<br />');
        document.write("arr['piege'][5] = "+arr['piege'][5] + '<br />');
        document.write("arr['piege'][7] = "+arr['piege'][7] + '<br />');
        document.write("arr['piege'][0] = "+arr['piege'][0] + '<br />');
        -->
        </script>
        </body>
        </html>

    Je cherche à parcourir ce tableau pour récupérer l'ensemble des champs.

    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	for (couches in config_layer){
    		 alert(couches);	
    	}
    il me fait un alert remove comme on peux le voir sur l'image.

    Merci de votre part
    Tio

    PS il y a peut être d'autre façon de passer de php vers js un tableaux à plusieurs dimensions

  2. #2
    Membre chevronné
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Par défaut
    Le problème se situe à la ligne 42.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 151
    Par défaut
    !! J'ai pas compris le sens de ton message.

    J'ai résolu mon problème en modifiant l'initialisation du tableau
    code php
    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
    $config_layer[0] = array (
    	'groupLayer' => 'natura2000', 
    	'layer' => array(
    		0 => array(
    			'url' => $CARMEN_HN,
    			'name'=> "sites_Natura2000_Directive_Habitats__ZSC__SIC__pSIC__en_Haute_Normandie,sites_Natura2000_Directive_Oiseaux__ZPS__en_Haute_Normandie"
    		)
    	)
    );
    $config_layer[1] = array (
    	'groupLayer' => 'foretprotection', 
    	'layer' => array(
    		0 => array(
    			'url' => $CARMEN_HN,
    			'name'=> "forets_de_protection_en_Haute_Normandie"
    		)
    	)
    );
    code JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	var config_layer = <?php  echo json_encode($config_layer);?>;
     
    for ( i = 0 ; i < config_layer.length; i++){
    		console.log(config_layer[i]['groupLayer']);
    		for ( j = 0 ; j < config_layer[i]['layer'].length; j++){
    			console.log(config_layer[i]['layer'][j]['url']);
    			console.log(config_layer[i]['layer'][j]['name']);
    			console.log('=============');
    		}
    }
    Tio.

  4. #4
    Membre chevronné
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Par défaut
    ... et évidemment, tu t'attendais à ce qu'on résolve ton problème sans connaitre le code ?

    Tu es le premier à nous balancer le code corrigé, sans même nous avoir montré le code défectueux.

    C'est ce que je voulais souligner par mon précédent message.

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

Discussions similaires

  1. [PHP 5.0] Tableaux à plusieurs dimensions
    Par Nemesis007 dans le forum Langage
    Réponses: 6
    Dernier message: 10/12/2009, 17h55
  2. Tableaux à plusieurs dimensions
    Par hallaj dans le forum Langage
    Réponses: 2
    Dernier message: 28/06/2008, 14h00
  3. Tableaux à plusieurs dimensions
    Par Cheps dans le forum C++
    Réponses: 2
    Dernier message: 10/03/2008, 13h13
  4. Tableaux à plusieurs dimensions
    Par Diabolik dans le forum Assembleur
    Réponses: 3
    Dernier message: 08/12/2003, 12h15

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