Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2008, 12h43   #1
Invité de passage
 
Inscription : mars 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 7
Points : 2
Points : 2
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 :
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 :
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 !
NeedYourHelp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 13h18   #2
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 180
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 180
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
Ne serait-ce pas plus simple de faire ça :
Code :
1
2
3
4
5
 
for( $i = 0; $i < 3; $i++ ) {
	$uneChaine = "1,2,13";
	$b[$i] = explode(',', $uneChaine);
}
retourne :
Code :
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)
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 14h00   #3
Invité de passage
 
Inscription : mars 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 7
Points : 2
Points : 2
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.
NeedYourHelp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2009, 15h02   #4
Invité de passage
 
Inscription : novembre 2008
Messages : 13
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2008
Messages : 13
Points : 1
Points : 1
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 :
$tab = array(0 => "rep1", 1 => "sous-rep", 2 => "sous-sous-rep");
Et je voulais en sortie un tableau du type :

Code :
1
2
 
array('rep1' => array('sous-rep' => array('sous-sous-rep'=> array())));
Voila ma solution :
Code :
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 :
1
2
3
4
 
      $c2 = array("yo" => 'pouet');
      $c1 = array("blabla" => $c2);
      $c0 = array($c1);
Mysth-R est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h49.


 
 
 
 
Partenaires

Hébergement Web