Tableaux plusieur dimension

Tableaux plusieur dimension - PHP - Programmation

Marsh Posté le 31-03-2004 à 16:22:14    


J ai un tableau qui contient un enregistrement:  
$val=$tab[key1][key2][key3];
echo $val; => j ai ma valeur.
 
Ce tableau n est pas de dimension fixe. Pour le parcourir, j utilise des foreach() avec une fonction recursive.
 
Tout va bien, je garde, l ensemble des keys dans un tableau que j incremente au fur et a mesure de mon parcour du tableau.
 
Maintenant ca se complique, je veux construire ma variable. Je doit la construire en texte car je suis ds une tableau a dimension variable donc je fais un for() sur les keys que j ai sauvegardé et je construit ma viaraible.
$val="$tableau[access][agir][session]"
 
Mais impossible de recupere le contenu:
echo $val; me renvoir Array[agir][session]
 
Donc j en conclu qu il interprete que la premiere partie de ma variable.
 
Comment le forcer a interpreter l'ensembel des [] et pas s'arreter au premier?
Existe t'il un appelle du tableau ne portant pas a confusion?  
 
Thx

Reply

Marsh Posté le 31-03-2004 à 16:22:14   

Reply

Marsh Posté le 31-03-2004 à 16:31:59    

$val="$tableau[access][agir][session]";
Je n'ai pas compris pourquoi tu devais faire une chaîne de caractères.
Sinon pour répondre à ta question ceci devrait marcher :
$val="${tableau['access']['agir']['session']}";

Reply

Marsh Posté le 31-03-2004 à 16:38:34    

En fait je fais des fonction recursive, donc ma memoire d'iteration, c est une chaine de caractere.
Donc a un moment donnée pendant le parcoure du tableau j'utilise cette memoire pour trouver ma valeur.
 
Ta syntaxe ne marche pas. c est koi comme ' ou `?

Reply

Marsh Posté le 31-03-2004 à 16:42:20    

guillemets simples (un chaîne de caractères)
tu peux me montrer la ligne en question dans ton code ?

Reply

Marsh Posté le 31-03-2004 à 16:42:50    

Non, la syntaxe de ratibus ne fonctionne pas j'y avais songé en lisant la question

Reply

Marsh Posté le 31-03-2004 à 16:45:56    

Ouai je confirme ca marche pas il me refuse les { .
Cela ne viens pas de guillemets, je les ai tous essayé.

Reply

Marsh Posté le 31-03-2004 à 17:07:54    

Je lis la doc pourtant :p : http://www.php.net/manual/fr/language.types.string.php  exemple 6-15

Reply

Marsh Posté le 31-03-2004 à 17:09:37    

TD-Rat a écrit :

Ouai je confirme ca marche pas il me refuse les { .
Cela ne viens pas de guillemets, je les ai tous essayé.


Ton code c'est exactement la ligne que tu nous as donnée ?
 
Si c'est le cas fais ça :
$val=$tableau['access']['agir']['session'];

Reply

Marsh Posté le 31-03-2004 à 17:14:35    

Ah ouais, l'idée des {} était bonne mais mal employée :)
 
Faut mettre  

Code :
  1. $var = "{$tab['key1']['key2']['key3']}";

Reply

Marsh Posté le 31-03-2004 à 17:36:32    

Ok merci bien ,j essaierai tout ca demain car j ai deja quitter le boulot.
Je poste demain dés que j ai essayer, merci bcp

Reply

Marsh Posté le 31-03-2004 à 17:36:32   

Reply

Marsh Posté le 31-03-2004 à 17:40:08    

ratibus a écrit :


Ton code c'est exactement la ligne que tu nous as donnée ?
 
Si c'est le cas fais ça :
$val="${tableau['access']['agir']['session']}";


 
Ouai ca fonctionne mais avec le $ a l interieur des acolades.


Message édité par td-rat le 31-03-2004 à 17:41:13
Reply

Marsh Posté le 31-03-2004 à 17:51:18    

TD-Rat a écrit :


 
Ouai ca fonctionne mais avec le $ a l interieur des acolades.


Oui autant pour moi j'avais fait une faute de frappe, mea culpa  :whistle:


Message édité par ratibus le 31-03-2004 à 17:52:00
Reply

Marsh Posté le 31-03-2004 à 23:10:25    

No souci merci

Reply

Marsh Posté le 01-04-2004 à 09:36:29    

OK j'ai pu verifier au boulot que ca marche bien.
 
Par contre se pause a moi un probleme similaire
 
$val1="$tab";
$val1.="['access']['agir']['session']";
 
echo {$val1}; m affiche Array['access']['agir']['session']
De nouveau il interprete que la premiere partie.
 
Une idée ?


Message édité par td-rat le 01-04-2004 à 10:00:10
Reply

Marsh Posté le 01-04-2004 à 10:19:13    

$val1="tab";  
$val1.="['access']['agir']['session']";  
 
echo ${$val1};

Reply

Marsh Posté le 01-04-2004 à 10:26:02    

Nop affiche que dalle

Reply

Marsh Posté le 01-04-2004 à 11:08:26    

$val1="tab";  
$val1.="['access']['agir']['session']";
 
eval('echo $'.$val1.';');

Reply

Marsh Posté le 01-04-2004 à 11:54:36    

K tres bien c est nickel , ca marche.
 
Juste une derniere chose comme dirai Columbo.
 
pour mettre une valeur dans $val2 ?
$val2="tab['access']";    
$val2.="['TOTO']['taille']";
eval('$'.$val2.'=100;');  
Cette syntaxe ne marche pas. Comment faut il faire ?

Reply

Marsh Posté le 01-04-2004 à 12:04:26    

Chez moi elle marche ta syntaxe [:spamafote]

Reply

Marsh Posté le 01-04-2004 à 12:14:55    

Ouai autant pour moi en faisant le copier coller j avais laisser le val1 dans mon eval.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed