Modification d'une variable globale dans une fonction...

Modification d'une variable globale dans une fonction... - PHP - Programmation

Marsh Posté le 11-03-2004 à 19:12:11    

:hello:  
 
Si je déclare un fichier PHP comme ci-dessous:

Code :
  1. <?
  2. $variable=3;
  3. function ma_fonction()
  4. {
  5. $variable++;
  6. }
  7. ma_fonction();
  8. echo "$variable"; %variable =3 ou 4 ??
  9. ?>


Est ce que à la sortie de la fonction, la variable sera encore égale à 4 ? Dans ce cas, est ce pour cela qu'il n'existe pas de return en PHP (puisque l'on peut modifier les variables en les mettant en global) ???


Message édité par neo9205 le 11-03-2004 à 19:12:50
Reply

Marsh Posté le 11-03-2004 à 19:12:11   

Reply

Marsh Posté le 11-03-2004 à 19:26:13    

1. Avant de poser la question, t'as pensé à faire le test tout seul, comme un grand ? :D
2. Il y a un return en php...
3. $variable vaudra 3, si tu arrives jusque là sans une erreur dans la fonction (puisque tu ne la passes pas en global justement)


Message édité par naceroth le 11-03-2004 à 19:27:22
Reply

Marsh Posté le 11-03-2004 à 19:35:33    

Si je fais ça :

Code :
  1. <?
  2. $variable=3;
  3. function ma_fonction()
  4. {
  5. global $variable;
  6. $variable++;
  7. }
  8. ma_fonction();
  9. echo "$variable"; %variable =3 ou 4 ??
  10. ?>


ca fonctionne ça donne bien la valeur 4
 
Et pour le return, ça marche comment et est ce utile ??


Message édité par neo9205 le 11-03-2004 à 19:39:27
Reply

Marsh Posté le 11-03-2004 à 19:56:13    

tu peux aussi faire ainsi :

Code :
  1. function ma_fonction(&$var)
  2. {
  3. $var++;
  4. }
  5. ma_fonction($mavariable)


c'est plus explicite et au moins tu sais que ta fonction va entre autre modifier la variable donné en parametre

Reply

Marsh Posté le 11-03-2004 à 20:05:00    

spike a écrit :

tu peux aussi faire ainsi :

Code :
  1. function ma_fonction(&$var)
  2. {
  3. $var++;
  4. }
  5. ma_fonction($mavariable)


c'est plus explicite et au moins tu sais que ta fonction va entre autre modifier la variable donné en parametre


 
Ok c'est une idée aussi mais si ma variable à modifier est dans un autre fichier,que je fait bien sur un include du fichier en question, que je modifie la variable dans la fonction, et que je recharge la page avec un submit().Une fois de retour sur la page, si je ne réexécute pas la fonction, la valeur de la variable sera repris du fichier initial ou aura gardé sa valeur précédente ?
 
Ne peut on pas modifier directement la valeur de la variable dans le fichier ?


Message édité par neo9205 le 11-03-2004 à 20:07:15
Reply

Marsh Posté le 11-03-2004 à 22:10:09    

ha non pour ca utilises les sessions, ou BDD, ou ecrit dans un fichier (bof) mais la valeur de $variable ne sera pas garder sinon.

Reply

Marsh Posté le 11-03-2004 à 22:21:54    

Tentacle a écrit :

ha non pour ca utilises les sessions, ou BDD, ou ecrit dans un fichier (bof) mais la valeur de $variable ne sera pas garder sinon.


 
Elle ne sera pas gardé meme si je passe ma variable dans le formulaire dans un champs "hidden" avant d'envoyer le formulaire ?
 
 
Qu'entend tu par BDD ? base de données ?

Reply

Marsh Posté le 11-03-2004 à 22:23:26    

si par formulaire pas de problème ... désolé j'avais pas compris que tu voulais faire ça.  
Oui j'entends base de données mais c'est une solution extrême pour ce que tu veux faire je pense :)

Reply

Marsh Posté le 11-03-2004 à 22:29:04    

Tentacle a écrit :

si par formulaire pas de problème ... désolé j'avais pas compris que tu voulais faire ça.  
Oui j'entends base de données mais c'est une solution extrême pour ce que tu veux faire je pense :)


 
oui mais non,lol.Elle ne gardera pas sa valeur ma variable...
 
C'est un formulaire qui se "submit" sur lui meme.Et comme j'ai un include (qui contient justement la fameuse variable initialisée)au début du fichier, il va etre relu à chaque rechargement...Du coup, je suis bloqué pour continuer !
 
Tu est d'accord avec le fait que ma variable va reprendre sa valeur initiale à chaque rechargement et non conserver une autre valeur que je lui aurait donné pendant un traitement ?  

Reply

Marsh Posté le 11-03-2004 à 22:33:15    

oui je suis d'accord mais tu pourrais pas la réinitialiser avec la valeur fourni via le formulaire ?

Reply

Marsh Posté le 11-03-2004 à 22:33:15   

Reply

Marsh Posté le 11-03-2004 à 22:34:30    

Tentacle a écrit :

oui je suis d'accord mais tu pourrais pas la réinitialiser avec la valeur fourni via le formulaire ?


 
C'est en effet une excellente idée, je vais tester ça...

Reply

Marsh Posté le 12-03-2004 à 00:47:34    

neo9205 a écrit :


Et pour le return, ça marche comment et est ce utile ??


 

Code :
  1. function test(){
  2.    return true;
  3. }
  4. if(test()){...}


 
Exemple trivial. C'est bien sûr utile dès lors que ta fonction doit renvoyer un résultat (ce qui est le cas de pratiquement toutes les instructions de php, je retourne le résultat si il n'y a pas de problème et false sinon => gestion d'erreur possible)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed