Page 1 sur 1

variables de variables et $_SESSION

Posté : 27 juil. 2007, 15:42
par d0m
Bonjour,

je galère un peu avec les variables de variables.
J'essaie de mettre une arborescence dans la variable $_SESSION.
du genre dans $_SESSION['arbre'] :
array( 1 => array('titre'=>'titre1', 'sous_parties'=> array(
                                      1=>array('titre'=>'titre1_1',....)) ))
          
)
pour mettre mes élements je parcours donc les profondeurs de la variables $_SESSION pour mettre mon élement au bon endroit. Pour cela je fais :
tmp = '_SESSION[\'config_pdf\'][\'arbre\']';
for($i=0;$i<$profondeur;$i++){
  $tmp .= '['.$fils[$i].'][\'sous_parties\']';//fils est un tableau qui contient le "chemin" que l'on veut prendre dans l'arbre (suite des numero des fils)

//utilisation de variable de variable pour mettre l'élement à la bonne profondeur
${$tmp}[$numero]['titre'] = $_REQUEST['titre'];
${$tmp}[$numero]['sous_parties'] = array();
}
Malheureusement cela ne fonctionne pas...
Un peu d'aide serait la bienvenue

Posté : 27 juil. 2007, 18:48
par Cyrano
Je n'ai pas trop compris ce que tu voulais faire. Mais as-tu parcouru ceci ?

Posté : 27 juil. 2007, 21:46
par Sékiltoyai
Au passage, il est impossible de stocker des tableaux dans les variables de session. Pour le faire, il faut les serialiser avant avec serialize() (et unserialize() pour désérialiser).

Posté : 27 juil. 2007, 21:57
par Cyrano
Au passage, il est impossible de stocker des tableaux dans les variables de session. Pour le faire, il faut les serialiser avant avec serialize() (et unserialize() pour désérialiser).
C'est nouveau ça :shock: C'est parfaitement possible au contraire, $_SESSION est du reste déjà un tableau. Rien n'interdit d'y ajouter des dimensions.

Posté : 28 juil. 2007, 15:59
par d0m
Mais as-tu parcouru ceci ?
Mon problème ne vient pas des tableaux multidimensionnels, je les utilise tout le temps pour classer mes variables.
Et au passage c'est bien sûr parfaitement possible de mettre des tableaux multidimensionnels dans la variable $_SESSION.

Mon problème vient plutôt du stockage du "chemin" dans le tableau dans une chaine de caractère je m'explique mieux:

Pour les variables de variables, on procède comme ceci:
$var = 'bonjour';
$$var = 'le monde';
ensuite on peut utiliser la variable $bonjour avec comme nom de variable bonjour

ce que je voudrais c'est savoir si c'est possible pour un tableau de stocker le nom de la variable et de l'utiliser avec un $, dans l'esprit :
$var = '_SESSION[x][y][z]';
$$var = 'trop fort ca marche';
et ensuite d'y accéder comme ceci :
echo $_SESSION[x][y][z];

affiche : trop fort ca marche

Posté : 28 juil. 2007, 16:05
par Cyrano
Non, ça effectivement, ça risque fort de ne pas fonctionner. J'avoue que je m'interroge sur l'intérêt de cette tentative :-k

Posté : 28 juil. 2007, 18:05
par d0m
J'avoue que je m'interroge sur l'intérêt de cette tentative :-k
pour placer un arbre dans la variable $_SESSION. Je vais tenter par des fonctions recursives alors.

Posté : 28 juil. 2007, 18:42
par orgerix
Utilise les références.

par exemple
<?php
session_start();
$_SESSION['a']['b']=array();
$racine=&$_SESSION['a']['b'];
$racine['c']='coucou';
print_r($_SESSION);
?>
donne

Code : Tout sélectionner

Array ( [a] => Array ( [b] => Array ( [c] => coucou ) ) )


Cependant, la seul facon d'accèder à la dimension inférieur est d'inclure une cle avec une référence du parent à chaque niveau.

Posté : 30 juil. 2007, 09:30
par d0m
Merci,
en associant le passage par réference du tableau $_SESSION et la récursivité j'ai pu remplir mon arbre. :D