nom de variable reconstruit d'après chaine de caractere

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : nom de variable reconstruit d'après chaine de caractere

Re: nom de variable reconstruit d'après chaine de caractere

par sandrine2 » 04 sept. 2009, 16:59

Merci à tous pour vos réponses.
Et plus spécialement à Babounet…
Et pourquoi pas tout simplement:
$_SESSION[$prefixe.$suffixe][1]['imgLegende']
EDIT:
Dans ton premier cas tu reconstruis le nom d'une variable.
En utilisant les sessions, tu ne reconstruis pas le nom d'une variable mais la clé d'un tableau.
Les $$ deviennent donc inutiles.

Et oui, tout simplement :)
Mais pourquoi faire simple quand on peut faire compliqué ?
Ça marche nikel.
Merci

Re: nom de variable reconstruit d'après chaine de caractere

par Dr@ke » 03 sept. 2009, 17:06

<?php
   echo "1 ".$a."<br>";
// ...
?>
[Mode Taquin: ON]
Sert a rien de sortir les variables si tu utilises des ". :mrgreen:
[Mode Taquin: OFF]
Désolé je sors -> :-#

Re: nom de variable reconstruit d'après chaine de caractere

par Babounet » 03 sept. 2009, 16:55

Et pourquoi pas tout simplement:
$_SESSION[$prefixe.$suffixe][1]['imgLegende']
EDIT:
Dans ton premier cas tu reconstruis le nom d'une variable.
En utilisant les sessions, tu ne reconstruis pas le nom d'une variable mais la clé d'un tableau.
Les $$ deviennent donc inutiles.

Re: nom de variable reconstruit d'après chaine de caractere

par FuZZyLine » 03 sept. 2009, 16:48

Salut toute seule,
Bonjour à tous,
Je viens solliciter votre aide avant de finir d'arracher les quelques cheveux qu'il me reste…
Alors, voilà :
D'un côté j'ai plusieurs tableaux multidimensionnels (nommés : $tabImgProjet001,$tabImgProjet002,
[...]
Avez-vous une idée d'où vient le problème ? Pourquoi ça marche dans un cas et pas dans l'autre ?
Merci par avance pour votre aide,
Sandrine
PS: desolée, la lecture n'est pas facilitée, j'ai eu beau appuyer sur le btn php et lire la faq en
tous sens je n'ai pas réussi à formater le code. Si quelqu'un a une solution à ça aussi ? Merci
En complément du post de Yosh.

Je ne sais si ca peut t'aider ni même si c'est ce que tu recherches mais,
au cas ou, voici deux petits exemples rapide de ce qu'il est possible de faire.
<?php
    
   $a = "exemple";
   $exemple = "other";
   $other = "last";

   echo "1 ".$a."<br>";
   echo "2 ".${a}."<br>";
   echo "3 ".${$a}."<br>";
   echo "4 ".${${$a}}."<br>";

   echo "<br><br>";

   echo "1 ".$a."<br>";
   echo "2 ".${a}."<br>";
   echo "3 ".${exemple}."<br>";
   echo "4 ".${other}."<br>";    

   echo "<br><br>";
           
   echo "1 ".${other}."<br>";    

   echo "<br><br>";

   echo "1 ".${${exemple}}."<br>";
   
   echo "<br>------------------------------------------------------<br>";
    
   $a       = "exemple";
   $exemple = "other";
   $other   = "last";

   $array = "";

   $a1 = $a;
   $a2 = ${$a};
   $a3 = ${${$a}};

   $array[$a1] = 1;
   $array[$a2] = 1;
   $array[$a3] = 1;

   echo "<br><br>";

   $a1 = ${exemple};
   $a2 = ${other};    
   $array[$a1] = 2;
   $array[$a2] = 2;

   echo "<br><br>";
           
   $a1 = ${other};    
   $array[$a1] = 1;

   print_r($array);

?>
...et pas taper si je suis à côté, @+ bon code ;)

Re: nom de variable reconstruit d'après chaine de caractere

par Yosh » 03 sept. 2009, 15:00

essaye avec un truc du genre

${'_SESSION['tabImgProjet001']'} et si ça marche, t'a plus qu'a adapter.

Et regarde par la http://www.lephpfacile.com/cours/26-les ... dynamiques

nom de variable reconstruit d'après chaine de caractere

par sandrine2 » 03 sept. 2009, 14:41

Bonjour à tous,
Je viens solliciter votre aide avant de finir d'arracher les quelques cheveux qu'il me reste…
Alors, voilà :
D'un côté j'ai plusieurs tableaux multidimensionnels (nommés : $tabImgProjet001,$tabImgProjet002, $tabImgProjet003,etc.);
de l'autre côté j'ai une variable $numeroProjet qui reçoit comme valeur : "001" ou "002" ou "003", etc.
Je souhaite qu'en fonction de la valeur de la variable $numeroProjet, on aille chercher des infos dans l'un ou l'autre des tableaux.
Si la valeur de $numeroProjet est 001, on va chercher des infos dans le tableau nommé $tabImgProjet001, etc.
Pour ce faire je reconstruit le nom de mon tableau à partir de la variable $numeroProjet. Pour le moment, pas de problème.
Voici le code :
<?php
//mes tableaux (j'ai simplifié, il y en a plus et ils sont plus remplis)
    $tabImgProjet001[1]['imgUrl']="content/images/projet1/01.jpg";
    $tabImgProjet001[1]["imgLegende"]="ici ma legende 1";
    
    $tabImgProjet002[1]['imgUrl']="content/images/projet2/01.jpg";
    $tabImgProjet002[1]["imgLegende"]="ici ma legende 1";
        
//Je recupère le nom de variable du tableau tabImgProjet concerné en fonction du numeroProjet. Le nom du tableau est récupéré dans la variable $identifiant
    $prefixe="tabImgProjet";
    $suffixe=$_SESSION['numeroProjet'];
    $complet=$prefixe.$suffixe;
    $identifiant=${$complet};
    echo $identifiant;
    echo $identifiant[1]["imgLegende"];
?>
Quand la valeur de $numeroProjet est 001, le premier echo me renvoie : array, le second me renvoie "ici ma légende 1". Donc ça marche bien.

Oui mais voilà, à présent je voudrais que tous mes tableaux soient des variables de session (accessibles dans tout le site donc). Je transforme le code ainsi :
<?php
    $_SESSION['tabImgProjet001'][1]['imgUrl']="content/images/projet1/01.jpg";
    $_SESSION['tabImgProjet001'][1]["imgLegende"]="ici ma legende 1";

    $_SESSION['tabImgProjet002'][1]['imgUrl']="content/images/projet2/01.jpg";
    $_SESSION['tabImgProjet002'][1]["imgLegende"]="ici ma legende 1";
   
$avant=""_SESSION[';
$prefixe="tabImgProjet";
    $suffixe=$_SESSION['numeroProjet'];
    $fin="']";
    $complet=$avant.$prefixe.$suffixe.$fin;
    $identifiant=${$complet};
    echo $identifiant;
    echo $complet;
?>
"echo $complet" me renvoie _SESSION['tabImgProjet001'], il reconstitue donc bien le nom de la variable.
Mais "echo $identifiant" ne renvoie rien. Apparemment la chaine n'est pas retranscrite en variable.

Avez-vous une idée d'où vient le problème ? Pourquoi ça marche dans un cas et pas dans l'autre ?

Merci par avance pour votre aide,

Sandrine

PS: desolée, la lecture n'est pas facilitée, j'ai eu beau appuyer sur le btn php et lire la faq en tous sens je n'ai pas réussi à formater le code. Si quelqu'un a une solution à ça aussi ? Merci