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 :

Contenu d'une variable et paramètres de fonction


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Points : 111
    Points
    111
    Par défaut Contenu d'une variable et paramètres de fonction
    Bonjour,

    je souhaiterais utiliser le contenu d'une variable comme paramètre d'une fonction.

    Pour simplifier j'ai une string contenant des noms de ville séparés par des ",". Je voudrais utiliser directement le contenu de la string comme paramètre d'une fonction.

    Code : 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
     
    $chaine = ' "bordeaux", "lille" ';
     
    function check() 
    {
     $args = func_get_args(); 
    foreach($args as $tmp) echo $tmp."<br />";
     
    }
     
    //utilisation
    check($chaine);
     
    //resultat
    bordeaux
    lille
    Je ne n'ai rien trouvé sur les moteurs de recherche car je ne sais pas comment exprimé ma recherche. En tous cas si vous avez une idée je suis preneur.

    D'avance merci de votre aide.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Regarde du côté de explode :
    http://us.php.net/fr/explode

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Points : 111
    Points
    111
    Par défaut
    merci de ta réponse mais c'est exactement ce que je ne veux pas faire.

    Je ne veux pas éclater ma chaine mais l'utiliser en tant que telle.

    en gros avec un proto du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    check($param1, $param2)
    je l'utiliserais de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     check('bordeaux', 'lille');
    avec un proto du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    check($param1, $param2, $param3)
    je l'utiliserais de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    check('bordeaux', 'lille', 'paris');
    l'idée c'est que la chaine " 'bordeaux', 'lille', 'paris' " soit contenu dans une variable et que je ferais une sorte de "echo" pour utiliser le contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ma_var = " 'bordeaux', 'lille', 'paris' ";
    check(echo $ma_var);

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Ce que tu cherches à faire est possible dans un langage comme Ruby, mais en PHP j'en doute fortement.

    Tu peux très bien faire en sorte que ta fonction accepte soit des tableaux, soit des string en paramètres. Et tu testes à l'intérieur.

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Il me semble avoir déjà donnée quelque chose qui se rapproche, voir identique à ce que tu recherche :
    -> Appliquer une fonction à plusieurs valeurs par référence

    En résumé :
    la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function ma_function(&$maVar) {
    	foreach ($maVar as $key => $element) {
    		$maVar[$key] = 'modif-'.$element;
    	}
    }
    Appel à la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $var1 = 'chaine1';
    $var2 = 'chaine2';
    $var3 = 'chaine3';
    call_user_func('ma_function', array(&$var1, &$var2, &$var3));
    Le passage par référence ne serait peut être pas nécessaire, faut voir.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Points : 111
    Points
    111
    Par défaut
    Merci de ton aide. En effet j'ai réussit à faire ce que je voulais mais finalement ça n'apporte rien de bien exceptionnel. Mais bon voici ce que ça donne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $var = " 'bordeaux', 'lille', 'paris' ";
     
    call_user_func_array('check', explode  (",", $var));

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par antrax2013
    ... mais finalement ça n'apporte rien de bien exceptionnel.
    Peut être que se que tu veux faire n'a rien d'exceptionnel aussi.

    Peut être un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function check($var) {
    	$array = explode(',', $var);
    	foreach ($array as $element) {
    		echo '$element:'.$element.'<br />';
    	}
    }
     
    $var = "'bordeaux', 'lille', 'paris'";
    check($var);
    Affichera :
    $element:'bordeaux'
    $element: 'lille'
    $element: 'paris'

    Ce qui te permets de faire ce que tu veux avec $element, comme appeler une autre fonction dans check() et passer en argument $element.
    On ne sait pas trop se que tu veux en faite.

    Mais prospecte du coté de array_map() ou array_filter(), il y a peut être quelque chose.

  8. #8
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Peut être que se que tu veux faire n'a rien d'exceptionnel aussi.
    Je suis d'accord avec toi.
    En fait je pensais faire un truc simple. Mais finalement c'est plus complexe que de faire comme j'aurais fait naturellement, c'est à dire la syntaxe que tu proposes.

    Merci quand même et désolé pour la perte de temps mais au moins le truc positif c'est que j'ai découvert la fonction call_user_func_array


    Après j'ai essayé aussi avec la fonction eval mais ça ne change rien et les opérateurs $$ ou ${$ma_variable}

    Bilan merci à tous

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

Discussions similaires

  1. Traitement en fonction du contenu d'une variable
    Par Graineur dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 15/03/2011, 17h11
  2. Réponses: 0
    Dernier message: 06/07/2010, 13h22
  3. Passage d'une variable comme paramètre d'une fonction
    Par lowman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2007, 15h12
  4. Réponses: 18
    Dernier message: 27/10/2006, 14h15
  5. Réponses: 11
    Dernier message: 22/06/2005, 11h04

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