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 :

Création tableau à la volée


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Points : 233
    Points
    233
    Par défaut Création tableau à la volée
    Bonsoir a tous et a toutes !

    Je poste a nouveau sur developpez car j'ai un vrai soucis d'algo sur la creation d'un tableau a la volé (j'ai posté récement un poste similaire). Voici le code :
    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
     
    $loop = array('a', 'b');
     
    $data[] = array('a'=>1,'b'=>5, 'data'=>'test1');
    $data[] = array('a'=>1,'b'=>6, 'data'=>'test2');
    $data[] = array('a'=>2,'b'=>7, 'data'=>'test3');
    $data[] = array('a'=>2,'b'=>8, 'data'=>'test4');
     
    $final=array();
    $string='';
    foreach($data as $array)
    {
    	$tmp = '';
    	foreach ($loop as $key)
    	{
    		$tmp.='['.$array[$key].']';
    	}
    	$string .= '$final'.$tmp.'=\''.$array['data'].'\';';
    }
    eval($string);
    print_r($final);
    voici le resultat :
    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
     
    Array
    (
        [1] => Array
            (
                [5] => test1
                [6] => test2
            )
     
        [2] => Array
            (
                [7] => test3
                [8] => test4
            )
     
    )
    Le print_r represente le resultat ! Ce que je cherche a faire c'est réaliser a l'aide de $loop et $data un autre tableau (a la volé) en utilisant $loop comme les clefs qui recupere les valeurs dans $data. Puis les valeurs de $data servent de clefs a mon tableau $final. Le soucis c'est que je peux recevoir des tableaux different a chaque fois (et a plusieurs niveau de valeur). Je m'etais beaucoup pris la tete mais le GROS soucis de l'eval c'est que sur mon code final c'est absolument impossible (trop lourd).

    Donc je reviens vers vous (et dieux sait que j'ai besoin d'aide) pour un indice sur comment réaliser ce casse tete d'une autre facon (avec reference ou bien recursion). Ou tout simplement sur un indice sur comment faire un tableau (a plusieurs niveau) a la volé (sans connaitre les clefs et valeurs a l'avance !)

    Voila vraiment un grand merci pour vos futurs reponses !

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 194
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 194
    Points : 8 409
    Points
    8 409
    Billets dans le blog
    17
    Par défaut
    Pour simplifier ton script on peut faire :

    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
    <?php
     
    header('Content-Type: text/plain') ;
     
    $data[] = array('a'=>1,'b'=>5, 'data'=>'test1');
    $data[] = array('a'=>1,'b'=>6, 'data'=>'test2');
    $data[] = array('a'=>2,'b'=>7, 'data'=>'test3');
    $data[] = array('a'=>2,'b'=>8, 'data'=>'test4');
     
    $final = array( ) ;
    foreach ( $data as $element ) {
        $final[$element['a']][$element['b']] = $element['data'] ;
    }
     
    print_r($final) ;
     
    ?>
    Donne :

    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
    Array
    (
        [1] => Array
            (
                [5] => test1
                [6] => test2
            )
     
        [2] => Array
            (
                [7] => test3
                [8] => test4
            )
     
    )
    Donne un exemple de tableau en entrée sur plusieurs niveaux et le tableau que tu désires obtenir en sortie.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Points : 233
    Points
    233
    Par défaut
    tout d'abord un grand merci pour ta reponse ! :-) ton example est bon, seulement je ne peux pas ecrire du code en dure car j'ignore le formatage de mon tableau (les nombres d'element et niveau)

    voici un exemple plus complexe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $loop = array('a','b','c');
     
    $data[] = array('a'=>1,'b'=>'yes','c'=>1,'data'=>'1');
    $data[] = array('a'=>1,'b'=>'yes','c'=>2,'data'=>'2');
    $data[] = array('a'=>1,'b'=>4,'c'=>1,'data'=>'3');
    $data[] = array('a'=>1,'b'=>4,'c'=>2,'data'=>'4');
    $data[] = array('a'=>2,'b'=>1,'c'=>1,'data'=>'5');
    $data[] = array('a'=>2,'b'=>1,'c'=>2,'data'=>'6');
    $data[] = array('a'=>2,'b'=>'no','c'=>1,'data'=>'7');
    $data[] = array('a'=>2,'b'=>'no','c'=>2,'data'=>'8');

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 194
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 194
    Points : 8 409
    Points
    8 409
    Billets dans le blog
    17
    Par défaut
    Deux questions pour être sûr de partir dans la bonne direction : d'où provient le tableau $data ? Comment est-il valorisé ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Points : 233
    Points
    233
    Par défaut
    en faite j'ai simplifié l'exemple pour le site ! mais derriere il y a un mecanisme assez complexe ! Mais de toute facon j'ai trouvé la solution ! En tout cas un immense merci a toi pour tes reponses :-)

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

Discussions similaires

  1. Création tableau multidimensions à la volée
    Par jypees dans le forum Langage
    Réponses: 4
    Dernier message: 01/05/2009, 15h07
  2. [JS-PHP] Création d'un tableau à la volée
    Par sosophie dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/03/2007, 09h56
  3. [AJAX] Création tableau
    Par Mat_DZ dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 01/08/2006, 17h30
  4. [Vba-E] Création tableau
    Par antoinelavigne dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/06/2006, 15h48

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