fonction qui recoit un nombre variable d'argument par référence

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 : fonction qui recoit un nombre variable d'argument par référence

par zeus » 26 juil. 2007, 14:12

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

par juch » 26 juil. 2007, 13:17

je ne trouve pas comment faire lol
j'ai crée le message en invité et je me suis inscrit entre temps c peut-etre pour ca

par Hywan » 26 juil. 2007, 12:58

N'oublies pas de mettre le sujet en "Résolu" :)

par juch » 26 juil. 2007, 12:32

merci Hubert :)

ta solution avec un tableau me convient parfaitement
j'avais deja essayé mais avec une petite erreur ce qui fait que j'avais abandonné l'idée ^^

je faisais :
foreach ($args as $arg)
au lieu de :
foreach ($args as &$arg)
Encore merci !

par juch » 26 juil. 2007, 12:01

Ok merci de vos réponses je vais essayer de ce pas :)

par Hywan » 25 juil. 2007, 18:37

Au temps pour moi alors :) Je savais pas.

par Hubert Roksor » 25 juil. 2007, 18:26

Tu peux les récupérer depuis ta fonction/méthode avec func_get_args();.
func_get_args() te fait perdre les références si elles ne sont pas dans un tableau ou objet. La seule façon de passer un nombre variable de variables par références c'est de tout mettre dans un tableau/objet.

par Hywan » 25 juil. 2007, 18:13

Tu ne pourrais pas bidouiller avec call_user_func_array ?
Un truc du genre :
$parameters = array(&$a, &$b, &$c, &$d);
call_user_func_array(array($obj, 'method'), $parameters);
ou
$parameters = array($a, $b, $c, $d);
call_user_func_array(array($obj, 'method'), &$parameters);
Référence placée sur chaque variable, ou seulement sur le tableau de paramètres.

Utiliser call_user_func_array(); te permet de passer un nombre de paramètres variables. Tu peux les récupérer depuis ta fonction/méthode avec func_get_args();.

par Hubert Roksor » 25 juil. 2007, 18:09

À ma connaissance c'est impossible, mais tu as deux solutions possibles. Soit une grosse liste d'arguments :
function foo(&$a = null, &$b = null, &$c = null, &$d = null, &$e = null)
{
    if (isset($a))
    {
        ++a;
    }
    if (isset($b))
    {
        ++b;
    }
    // etc...
Soit, plus élégant, tout passer par un tableau (ou un objet)
$a = 1;
$b = 2;
$c = 3;

foo(array(&$a, &$b, &$c));

function foo(array $args)
{
	foreach ($args as &$arg)
	{
		++$arg;
	}
}

var_dump($a,$b,$c);

fonction qui recoit un nombre variable d'argument par référe

par juch » 25 juil. 2007, 18:01

bonjour
moi je cherche à faire une fonction qui recoit un nombre variable d'argument par référence
par exemple
$a=1
$b=2
$c=3...
je veux qu'apres la fonction
$a=2
$b=3
$c=4
mon code :
$a = 1;
$b = 2;
$c = 3;
function fonction() 
{
$args = func_get_args();
foreach($args as $value) { $value++; }
}
fonction(&$a,&$b,&$c);
mais après fonction les valeurs sont identiques...
en considérant que je ne veux pas passer par des variables globales est-ce possible ?

merci de vos réponses