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 :

[Tableaux] Portée de variables


Sujet :

Langage PHP

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut [Tableaux] Portée de variables
    Salut,
    J'ai la fonction ci dessous que j'appelle depuis une page PHP.
    Les variables $$layer_name correspondent à une serie de checkbox qui doivent être cochées ou pas selon les valeurs de $all_layers.
    Si je mets le code directement dans ma page php, ça fonctionne.
    Par contre, quand il est comme ceci, dans une fonction, ça ne fonctionne pas! Mes checkbox restent décochées.
    Je pense que c'est "simplement" que la portée de $$layer_name n'excéde pas la fonction.
    Ma question est donc : comment faire pour que la variable porte au dehors de la fonction.
    Merci pour vos conseils

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function activateLayers($map,$all_layer){
    	foreach ($all_layer as $layer_name){
    		if (preg_match('/'.$layer_name.'/', $layers)){
    			$$layer_name = "CHECKED";
    			$this_layer = $map->getLayerByName($layer_name);
    			$this_layer->set('status', MS_ON);
    		} else {
    			$$layer_name = "";
    			$this_layer = $map->getLayerByName($layer_name);
    			$this_layer->set('status', MS_OFF);
    		}
    	}
    }

  2. #2
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut
    Bonjour,
    en mettant dans le script quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $toto="ma variable globale";
    et dans chaque fonction l'utilisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function f01()
    {
    global $toto;
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function f02()
    {
    global $toto;
    ...
    }
    ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ou alors en retournant un booléen!

    Par exemple la fonction retourne TRUE : coché ou FALSE:décoché!

    webrider

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je pense que tu travailles en mode register_globals = on, ce qui est mal.
    passe ce flag à off et utilise les variables superglobales $_GET[], $_POST[], $_REQUEST[] pour acceder aux données de ton formulaire. Tu n'auras alors pas de problèmes de portées pour ça.

    Sinon je completerais la réponse de Christohe Charron en précisant que si, dans la fonction, on utilise $GLOBALS['toto'] au lieu de $toto, il n'est alors pas nécessaire de déclarer $toto en global.

  5. #5
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    finalement j'ai changé mon fusil d'épaule parce que mes variables sont dans un tableau.
    Donc j'utilise mes variables comme clés et 'CHECKED' comme valeur associée.
    Merci pour vos réponses.
    PS: je travaille avec register_globals = off, ce qui est bien

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

Discussions similaires

  1. [Tableaux] Portée d'une variable ?
    Par tintin72 dans le forum Langage
    Réponses: 10
    Dernier message: 28/03/2008, 17h49
  2. [Tableaux] Portée des variables
    Par LeXo dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2007, 22h28
  3. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  4. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05
  5. [FLASH MX 2004][XML]portée de variable
    Par marco_ dans le forum Flash
    Réponses: 8
    Dernier message: 29/04/2004, 15h47

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