Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1745 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Variables varaibles et Array : compatible ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variables varaibles et Array : compatible ?

n°1703400
Shinigami ​Delroen
Posté le 17-03-2008 à 13:53:55  profilanswer
 

Bonjour,
 
Je recontre un petit problème avec des variables variables... Je pourrais me lancer dans de longues explications, mais je pense que le code source (commenté) est plus explicite.
 
Ce que j'appelle "variable variable" (reprenant ainsi la terminologie du Site du Zéro) est la construction suivante :  

$test = 1;
$string = 'test' ;
echo ${$string} ;

Ce code source affiche "1".
 
Cette construction fonctionne également dans le cas suivant :  

$shinigami_test = 1 ;
$string = 'test' ;
echo${'shinigami_' . $string} ;


 
Pour ma part, je cherche à combiner cela avec un array, de la façon suivante :

$var_tab['img1'] = 10 ;
$var = 1;
echo ${'var_tab[\'img' . $var . '\']'} ;

Cela devrait afficher 10, mais ça n'affiche rien.
 
J'ai également testé le passage par une variable intermédiaire :

$var_tab['img1'] = 10 ;
$var1 = 1 ;
$string = 'var_tab[\'' . $var . '\']' ;
echo $string ; // Pour test. Affiche var_tab['img1'].
$echo ${$string} ;

Mais le résultat est aussi peu probant.
 
Est-ce que par hasard l'un d'entre vous saurait comment résoudre ou contourner le problème ?
 
Merci beaucoup !

mood
Publicité
Posté le 17-03-2008 à 13:53:55  profilanswer
 

n°1703419
art_dupond
je suis neuneu... oui oui !!
Posté le 17-03-2008 à 14:30:56  profilanswer
 

echo ${'var_tab'}['img'.$var];

 

${'var_tab'} est ta variable dans laquelle tu vas chercher l'élément "numéro" ['img'.$var]

Message cité 1 fois
Message édité par art_dupond le 17-03-2008 à 14:31:58

---------------
oui oui
n°1703428
kao98
...
Posté le 17-03-2008 à 14:41:43  profilanswer
 

art_dupond a écrit :

echo ${'var_tab'}['img'.$var];
 
${'var_tab'} est ta variable dans laquelle tu vas chercher l'élément "numéro" ['img'.$var]


Pourquoi les accolades ?
Je pense (pas testé) que ça devrait suffire :

Code :
  1. echo $var_tab['img'.$var];

Message cité 1 fois
Message édité par kao98 le 17-03-2008 à 14:42:08

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1703432
skeye
Posté le 17-03-2008 à 14:44:41  profilanswer
 

Shinigami Delroen a écrit :

Bonjour,
 
Je recontre un petit problème avec des variables variables... Je pourrais me lancer dans de longues explications, mais je pense que le code source (commenté) est plus explicite.
 
Ce que j'appelle "variable variable" (reprenant ainsi la terminologie du Site du Zéro) est la construction suivante :  

$test = 1;
$string = 'test' ;
echo ${$string} ;

Ce code source affiche "1".


 
Je n'ai rencontré qu'une raison valable d'utiliser un jour cette immonde syntaxe qui rend le code illisible, et c'était à cause des limitations de php...tu es sûr que tu ne peux pas utiliser un simple tableau pour faire ce que tu fais?


---------------
Can't buy what I want because it's free -
n°1703433
kao98
...
Posté le 17-03-2008 à 14:46:04  profilanswer
 

skeye a écrit :


 
Je n'ai rencontré qu'une raison valable d'utiliser un jour cette immonde syntaxe qui rend le code illisible, (...)


T'as réussi à en trouver une ?  :ouch:  
Bravo !


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1703434
skeye
Posté le 17-03-2008 à 14:48:03  profilanswer
 

kao98 a écrit :


T'as réussi à en trouver une ?  :ouch:
Bravo !


oui, en essayant de wrapper la couche oci8 dans des classes maison. Sinon j'avais des problèmes de passages par référence des variables bindées pour récupérer le résultat de la clause returning (si mes souvenirs sont bons).[:petrus75]


Message édité par skeye le 17-03-2008 à 14:48:12

---------------
Can't buy what I want because it's free -
n°1703435
art_dupond
je suis neuneu... oui oui !!
Posté le 17-03-2008 à 14:50:09  profilanswer
 

kao98 a écrit :


Pourquoi les accolades ?
Je pense (pas testé) que ça devrait suffire :

Code :
  1. echo $var_tab['img'.$var];



oui, j'ai juste modifié son code sans réfléchier :p

  

skeye, tu pourrais donner "la raison valable" :)

 

edit: oups :p


Message édité par art_dupond le 17-03-2008 à 14:50:21

---------------
oui oui
n°1703634
Shinigami ​Delroen
Posté le 17-03-2008 à 19:53:51  profilanswer
 

Pour ma part, la raison valable, c'est que j'ai un form avec 5 fichiers img1 à 5, donc ça me permet de boucler sur le tableau $_FILE (y'a peut-etre des fonctions mieux foutues pour le parcours de tableau ceci dit...)
 
EDIT : Je vais étudier le array_map, mais sinon la syntaxe $var_tab['img' . $var] fonctionne.
 
Merci beaucoup !


Message édité par Shinigami Delroen le 17-03-2008 à 20:01:03
n°1703658
art_dupond
je suis neuneu... oui oui !!
Posté le 17-03-2008 à 20:43:54  profilanswer
 

oui sauf que pour ta bonne raison, tu n'emploies plus le truc moche :)
 
 
 
ps: pour parcourir un tableau, y a foreach


---------------
oui oui
n°1703674
CyberDenix
Posté le 17-03-2008 à 20:57:23  profilanswer
 

skeye a écrit :

Je n'ai rencontré qu'une raison valable d'utiliser un jour cette immonde syntaxe qui rend le code illisible, et c'était à cause des limitations de php...


 

kao98 a écrit :


T'as réussi à en trouver une ?  :ouch:  
Bravo !


 
Les gars, mais les gars, quoi !  :sweat:  
 

Code :
  1. abstract class EntityObject {
  2.  
  3.  /**
  4.   * Constructs the class.
  5.   */
  6.  public function __construct() {
  7.  }
  8.  
  9.  /**
  10.   * Destroys the class.
  11.   */
  12.  public function __destruct() {
  13.  }
  14.  
  15.  /**
  16.   * Intercepts calls on accessors (getters and setters)
  17.   */
  18.  public function __call($method, $attrs) {
  19.    $prefix  = substr($method, 0, 3);
  20.    $suffix  = chr(ord(substr($method, 3, 1)) + 32);
  21.    $suffix .= substr($method, 4);
  22.    $cattrs  = count($attrs);
  23.    if (property_exists($this, $suffix)) {
  24.       if ($prefix == 'set' && $cattrs == 1) {
  25.           return $this->__set($suffix, $attrs[0]);
  26.       }
  27.       if ($prefix == 'get' && $cattrs == 0) {
  28.           return $this->__get($suffix);
  29.       }
  30.    }
  31.    trigger_error('The method '.$method.' doesn\'t exist.');
  32.  }
  33.  
  34.  /**
  35.   * Gets the value of the given member
  36.   */
  37.  public function __get($member) {
  38.    return $this->{$member};
  39.  }
  40.  
  41.  /**
  42.   * Sets the given value to the given member
  43.   */
  44.  public function __set($member, $value) {
  45.    $this->{$member} = $value;
  46.  }
  47. }


 
 :hello:

Message cité 1 fois
Message édité par CyberDenix le 17-03-2008 à 20:57:48

---------------
Directeur Technique (CTO)
mood
Publicité
Posté le 17-03-2008 à 20:57:23  profilanswer
 

n°1703708
skeye
Posté le 17-03-2008 à 21:39:14  profilanswer
 

CyberDenix a écrit :

 

Les gars, mais les gars, quoi !  :sweat:

 

ok, lol.
Le jour où ton getter doit retourner autre chose que la valeur exacte d'un membre il se passe quoi?
Le jour où ton setter doit vérifier la valeur passée il se passe quoi?


Message édité par skeye le 17-03-2008 à 21:40:24

---------------
Can't buy what I want because it's free -
n°1703735
Shinigami ​Delroen
Posté le 17-03-2008 à 22:09:09  profilanswer
 

C'est normal si je comprends plus rien à ce que les gens répondent dans ce topic ?   :pt1cable:  
 
(je savais meme pas qu'on pouvait faire de l'objet en PHP...)
 

Citation :

oui sauf que pour ta bonne raison, tu n'emploies plus le truc moche :)


Ah oui, très juste, j'avais pas pensé à ça ^^
 
Après avoir regardé array_map, ça fait pas vraiment ce que je veux (comme son nom l'indique, c'est une fonction de mapage, donc si elle agit sur un tableau, elle renvoie un tableau.)  
 
Pour le "foreach", merci, mais finalement ce n'est pas nécessaire, vue la simplicité de la syntaxe retenue (je la garde quand meme sous le coin du coude, au cas où !)
 

n°1703900
skeye
Posté le 18-03-2008 à 09:52:46  profilanswer
 

Shinigami Delroen a écrit :

C'est normal si je comprends plus rien à ce que les gens répondent dans ce topic ?   :pt1cable:  
 
(je savais meme pas qu'on pouvait faire de l'objet en PHP...)
 

Citation :

oui sauf que pour ta bonne raison, tu n'emploies plus le truc moche :)


Ah oui, très juste, j'avais pas pensé à ça ^^
 
Après avoir regardé array_map, ça fait pas vraiment ce que je veux (comme son nom l'indique, c'est une fonction de mapage, donc si elle agit sur un tableau, elle renvoie un tableau.)  
 
Pour le "foreach", merci, mais finalement ce n'est pas nécessaire, vue la simplicité de la syntaxe retenue (je la garde quand meme sous le coin du coude, au cas où !)
 


 
Tu peux aussi éventuellement passer tes images dans un tableau directement dans $_FILES, non? Il se passe quoi si tu nommes tous tes input type=file montableau[]? J'ai jamais essayé, mais c'est à regarder, pour faire encore un peu plus propre...:p


---------------
Can't buy what I want because it's free -

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Variables varaibles et Array : compatible ?

 

Sujets relatifs
Menu déroulant en XHTML/CSS (sans JS), compatible IE6 : Possible ?Viabilité des variables locales affectées à d'autres variables
[RESOLU] Portée variables dans les classes ?[RESOLU] Array ou pas Array, mon intersect semble dire NON !
passer une des variables d’une page a une autreVariables spéciales C/C++ [RESOLU]
Trier une array - arbre[VBS] mapper lecteur reseau avec variables environnement
Problème de passage de variablesMise à jour base données par ajax avec variables POST
Plus de sujets relatifs à : Variables varaibles et Array : compatible ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR