IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Créer des variables dynamiques


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut Créer des variables dynamiques
    Bonjour-bonsoir le monde, et bonne année.

    J'ai à résoudre un cas particulier, où j'ai besoin de créer des variables dynamiques. Les noms que je veux donner à ces variables sont dans un tableau, indexé basiquement à partir de 0, et à suivre. Et les valeurs que je veux donner à ces variables sont leur index dans le tableau.

    J'ai donc fait ceci :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            foreach($en_tetes as $no=>$libelle)
            {
              $v="_".$libelle;
              $$v = $no;
              echo $$v . " = $no - ";
            }
    $v="_".$libelle;, c'est pour éviter les collisions avec des variables pouvant déjà exister).

    Mais ça ne marche pas : ça m'affiche "0 = 0 - 1 = 1 - 2 = 2 - "etc...

    J'ai essayé ${$v} et divers autres trucs du genre, mais rien n'y a fait.

    Merci à ceux qui pourront m'aider.

    AMIcalement.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    salut,

    le nom d'une une variable DOIT OBLIGATOIREMENT commencer par une lettre, après tu mets ce que tu veux.
    Poste un exemple complet de ce que tu as en entrée et de ce que tu attends en sortie

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- https://www.php.net/manual/fr/langua...les.basics.php

    2- la question a été posée 10000 fois.

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    @rawsrc
    Les noms de variables suivent les mêmes règles de nommage que les autres entités PHP. Un nom de variable valide doit commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés. Exprimé sous la forme d'une expression régulière, cela donne : ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
    Ce que tu dis n'est donc vrai qu'en partie. De plus, j'ai testé, et c'est pareil...

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    enfin généralement on débute le nom d'une variable par un _ quand tu veux lui donner une signification particulière. Je m'explique : dans les langages où la visibilité des variables est un concept inexistant, il y a une habitude de codage pour distinguer ce genre de variables avec un visibilité privée des autres avec une visibilité publique : c'est démarrer le nom de la variable par un _ ou __. Cela est totalement inutile en PHP et tu ne verras pas des nommages de variables commençant par _. J'ai même vu dans les règles de codage : _ ⇔ protected et __ ⇔ private.

    Donc autant ne pas l'utiliser d'où ma prose qui insistait sur le démarrage par une lettre. Après tu fais bien comme il te semble, au moins tu as l'explication.

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    après tu peux te pencher sur extract()

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    Il faut croire que je ne suis opas très fort en recherche : je ne vois pas ce qui me fait avance r dans ce lien...

    Citation Envoyé par jreaux62 Voir le message
    2- la question a été posée 10000 fois.
    Ben... même remarque, mais j'ai quand même un peu chercher : je sui sétoné que 10000 références m'aient échappées. Peux-tu être un petit peu plus précis ?

    AMicalement.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Poste un exemple complet de ce que tu as en entrée et de ce que tu attends en sortie

  9. #9
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    Franchement, je ne vois pas ce que ça va apporter...
    Voici les définitions d'en-têtes de deux formats de fichiers CSV que je suis susceptible de rencontrer :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    $attendu=[
        ["dateOp",
         "dateVal",
         "label",
         "category",
         "categoryParent",
         "supplierFound",
         "amount",
         "accountNum",
         "accountLabel",
         "accountbalance"],
     
        ["dateOp",
         "dateVal",
         "label",
         "category",
         "categoryParent",
         "amount",
         "supplierFound",
         "comment",
         "accountNum",
         "accountLabel",
         "accountbalance"]
        ];
    Ce que je voulais réaliser (qui est maintenant résolu autrement, tu as bien compris ?) était de traiter l'un ou l'autre de ces formats de fichiers avec le même code, c'est pourquoi je désirais créer dynamiquement des variables, "$dateOp", "$dateVal" etc..., en leur donnant comme valeurs leur rang dans la table correspondant. De cette façon, j'adressais la colonne de mon fichier CSV en l'indexant par son nom (toujours le même, sous réserve que je ne m'intéresse pas aux colonnes qui n'existent pas partout) et non par son index, puisqu'il n'est pas toujours le même.

    Pour cela, connaissant le numéro du format de mon fichier, je faisais
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    foreach($attendus[$i] as $no=>$libelle)
            {
              $v="_".$libelle;
              $$v = $no;
              echo $$v . " = $no - ";
            }
    Il me semble que mon utilisation de "$$v" est conforme à la doc de PHP, et pourtant, l'echo me donne 0=0, 1=1 etc...

    C'est d'ailleurs exactement ce que fait array_combine, en jouant sur les index et non sur des variables.

    Ai-je donné les bonnes informations ?

    AMIcalement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Procédure Stockée pour créer des TABLE dynamiquement
    Par GuyverZ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/05/2009, 22h29
  2. Créer des variables avec un nom dynamique
    Par midoparis dans le forum C#
    Réponses: 7
    Dernier message: 22/01/2009, 14h17
  3. créer des variables javascript dynamiquement dans un code php
    Par lau_the_raptor dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/07/2007, 12h10
  4. Créer des variables de classe dynamiquement
    Par Sebastien13 dans le forum Langage
    Réponses: 1
    Dernier message: 13/02/2007, 22h00
  5. Créer des variables dynamiques
    Par Sagouin64 dans le forum C++
    Réponses: 19
    Dernier message: 23/12/2006, 01h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo