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 :

[Tableaux] Insérer une valeur dans un tableau multidimensionnel et clés dynamiques


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Par défaut [Tableaux] Insérer une valeur dans un tableau multidimensionnel et clés dynamiques
    Bonjour I need your help !

    Je dois créer dynamiquement un tableau mutlidimensionnel $a dont les clés proviennent d'un autre tableau $b.
    La profondeur de ce tableau multidimensionnel $a est inconnue et dépend du nombre de cases dans $b.

    Voilà un exemple pour que vous compreniez mieux mon problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Un tableau contenant des valeurs qui me serviront de clés
    $uneChaine = "1,2,13";
    $b = explode(',', $uneChaine);
     
    //Création d'un tableau multidimensionnel dont les clés sont les valeurs de $b
    $a[1][2][13] = $uneValeur;
    Comme ça, c'est simple, sauf que tout ça est dans une boucle, et qu'à chaque tour, les valeurs de $b peuvent varier en contenu et en nombre.
    Mon problème est que je ne trouve pas la syntaxe à utiliser pour insérer une valeur dans mon tableau multidimensionnel sans connaître à l'avance la profondeur.

    Il faudrait que j'utilise quelque chose dans cet esprit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //Un tableau contenant des valeurs qui me serviront de clés
    $uneChaine = "1,2,13";
    $b = explode(',', $uneChaine);
     
    foreach($b as $valeur) {
      $keys .= "[$valeur]";
    }
    $b.$keys = $uneValeur
     
    //ou
     
    $b.'['.str_replace(',', '][', $uneChaine).']' = $uneValeur;
    Mais je ne trouve aucune syntaxe correcte... Pouvez-vous m'aider ?

    Merci !

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Par défaut
    Ne serait-ce pas plus simple de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for( $i = 0; $i < 3; $i++ ) {
    	$uneChaine = "1,2,13";
    	$b[$i] = explode(',', $uneChaine);
    }
    retourne :
    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
     
    Array
    (
        [0] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 13
            )
     
        [1] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 13
            )
     
        [2] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 13
            )
     
    )
    OK tu n'as pas exactement le résultat que tu voudrais mais peut-être cela pourrait convenir (ce tableau est d'ailleurs nettement plus simple à parcourir ensuite pour récupérer tes données)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Par défaut
    Bonjour Darkstar, merci pour ta réponse.
    C'est exactement un tableau comme je l'ai expliqué plus haut qu'il me faut. Cela me permet de trier des données sous la forme d'un arbre et de récupérer ensuite une donnée en utilisant simplement les identifiants de ses mères.

    Dans mon exemple, je veux insérer dans mon tableau la valeur $uneValeur à l'emplacement $array[1][2][13] parce que la valeur $uneValeur dont l'identifiant est '13' a pour parents les éléments 2 et 1.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Par défaut
    Salut,
    j'avais le même problème.

    En gros j'avais en entrée un tableau de la forme (avec des values différentes et en nombre différents):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab = array(0 => "rep1", 1 => "sous-rep", 2 => "sous-sous-rep");
    Et je voulais en sortie un tableau du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array('rep1' => array('sous-rep' => array('sous-sous-rep'=> array())));
    Voila ma solution :
    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
     
          $koko = array(0 => 'rep1', 1 => 'album1', 2=> 'album2');
     
          $nb_cases = count($koko);
          $ancien_var = "";
          for($i = ($nb_cases-1) ; $i>=0; $i--)
          {
             $j = $i;
             $nom_var = 'elt'.$j;
             if($i == ($nb_cases-1))
             {
                $$nom_var = array($koko[$i] => array());
             }
             else
             {
                $$nom_var = array($koko[$i] => $ancien_var);
             }
             $ancien_var = $$nom_var;
          }
          $test = $$nom_var;
    En fait pour faire simple l'idée est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          $c2 = array("yo" => 'pouet');
          $c1 = array("blabla" => $c2);
          $c0 = array($c1);

Discussions similaires

  1. Insérer une valeur dans un tableau
    Par ghir_ana dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/07/2011, 14h38
  2. Réponses: 13
    Dernier message: 31/01/2010, 11h58
  3. Réponses: 1
    Dernier message: 23/04/2008, 10h14
  4. [Tableaux] retrouver une valeur dans un tableau
    Par tininou dans le forum Langage
    Réponses: 3
    Dernier message: 26/01/2007, 23h04
  5. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 14h41

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