question sur return d'une fonction

DaD
Eléphanteau du PHP | 25 Messages

06 nov. 2006, 16:33

Salut,

Ma question est surement stupide, mais je ne pige pas ce qu'il faut que je fasse.

J'ai une fonction :

Code : Tout sélectionner

function mafonction(...) { if (blabla) { $mavariable1 = 'oui'; return $mavariable1 ; } else { $mavariable1 = 'non'; return $mavariable1; } }
puis je voudais appelé ma fonction et récupérer ma variable et agir en fonction de sa valeur, mais l'interpreteur e dis tout le temp que ma variable n'existe pas :

Code : Tout sélectionner

mafonction(...); echo "ma variable est : $mavariable1";
Pourquoi cette variable n'existe pas alors que je l'ai créer dans ma fonction?
comment faire pour que mon "echo" fonctionne?

Merci d'avance, et encore pardon pour la débilité de ma question (j'chui qu'un pov newbie :) )
+
DaD

ViPHP
ViPHP | 1961 Messages

06 nov. 2006, 16:40

Bonjour,

Comme tu le dis, tu l'as déclarée dans ta fonction. Donc elle n'est "visible" qu'à l'intérieur de la fonction
function mafonction(...) {
  if (blabla){
    $mavariable1 = 'oui';
  }
  else{
    $mavariable1 = 'non';
  }
  return $mavariable1;
}
// Si tu veux garder la valeur de retour
$varRetour = mafonction(...) ;
echo $varRetour
// Si c'est juste pour un affichage
echo mafonction(...) ;
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

DaD
Eléphanteau du PHP | 25 Messages

06 nov. 2006, 16:48

ha ok...et si je veux faire revenir plusieurs variable je fais comme ça ?

Code : Tout sélectionner

unction mafonction(...) { if (blabla){ $mavariable1 = 'blue'; $mavariable2 = 'red'; $total = array ($mavariable1, $mavariable2); return $total; } else{ $mavariable1 = 'non'; } return $mavariable1; } // si je veux afficher la variable1 $varRetour = mafonction(...) ; echo $total[0]; // si je veux afficher la variable1 $varRetour = mafonction(...) ; echo $total[1];
c ça?

Eléphant du PHP | 193 Messages

06 nov. 2006, 16:54

Si ta fonction doit te retourner plusieurs valeurs, il vaut peut-être mieux déclarer tes variables en global dans la fonction.

ViPHP
ViPHP | 1961 Messages

06 nov. 2006, 16:54

Re,

C'est pas très astucieux de faire retourner à une fonction des types différents.

Pour faire ce que tu veux il vaut mieux toujours retourner un tableaux et tester le nombre de postes du tableau.

Aussi ceci n'est pas correct
$varRetour = mafonction(...) ;
echo $total[1];
Le résultat de ta fonction se trouve dans $varRetour, donc
$varRetour = mafonction(...) ;
echo $varRetour[1];
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

DaD
Eléphanteau du PHP | 25 Messages

06 nov. 2006, 16:58

Merci Ajoloca, je crois que j'ai piger...

Qu'est ce que ça change de les passer en global? elle sont accèssible hors de ma fonction?

si oui faut il les déclarés comme ça ?

Code : Tout sélectionner

Global $variable1; $variable1 = 'oui';

ViPHP
ViPHP | 1961 Messages

06 nov. 2006, 17:05

Re,

En régle générale si tu as besoin de déclarer des variables globales (sauf cas extrèmes) c'est qu'il y a un PB de conception. Donc si tu peut les éviter...

Mais éffectivement tu dois déclarer ta variable en dehors de ta fonction, ensuite pour pouvoir l'utiliser dans la fonction tu dois spécifier que tu veux utiliser la variable globale avec le préfixe 'global'.

Mais je te le répète, évite-les comme la peste.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

DaD
Eléphanteau du PHP | 25 Messages

06 nov. 2006, 17:08

Ok, merci pour ces précieux conseil Ajoloca, je vais essayer d'appliquer tout ça.

ViPHP
ViPHP | 1961 Messages

06 nov. 2006, 17:11

Re,

De rien, pense au résolu.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein