[PHP] Probleme avec les fonctions

Probleme avec les fonctions [PHP] - PHP - Programmation

Marsh Posté le 01-11-2002 à 17:21:17    

Bonjour,
 
Pouvez vous me dire pourquoi il ne m'affiche pas le $tbl à la fin de la fonction:

Code :
  1. test("13","0" );
  2. function test($nombre,$nbfois){
  3. if ($nombre > "5" )
  4. {
  5. //si le nombre est sup à 5
  6. $nombre=$nombre-"5";
  7. $nbfois=$nbfois+"1";
  8. $tbl=array($nbfois=> '5');
  9. //print_r($tbl);
  10. test($nombre,$nbfois);
  11. }
  12. elseif ($nombre == "5" )
  13. {
  14. //si le nombre est egal à 5
  15. $tbl=array(1=> '5');
  16. }
  17. else
  18. {
  19. //si le nombre est inférieur à 5
  20. echo 'nombre inferieur à 5<br>';
  21. echo $nombre;
  22. }
  23. return $tbl;
  24. }
  25. print_r($tbl);


 
merci d'avance


Message édité par players le 01-11-2002 à 19:21:58
Reply

Marsh Posté le 01-11-2002 à 17:21:17   

Reply

Marsh Posté le 01-11-2002 à 19:24:17    

players a écrit a écrit :

Bonjour,
 
Pouvez vous me dire pourquoi il ne m'affiche pas le $tbl:

Code :
  1. test("13","0" );
  2. function test($nombre,$nbfois){
  3. if ($nombre > "5" )
  4. {
  5. //si le nombre est sup à 5
  6. $nombre=$nombre-"5";
  7. $nbfois=$nbfois+"1";
  8. $tbl=array($nbfois=> '5');
  9. //print_r($tbl);
  10. test($nombre,$nbfois);
  11. }
  12. elseif ($nombre == "5" )
  13. {
  14. //si le nombre est egal à 5
  15. $tbl=array(1=> '5');
  16. }
  17. else
  18. {
  19. //si le nombre est inférieur à 5
  20. echo 'nombre inferieur à 5<br>';
  21. echo $nombre;
  22. }
  23. return $tbl;
  24. }
  25. print_r($tbl);


 
merci d'avance




Code :
  1. $tbl2=test("13","0" );
  2. function test($nombre,$nbfois){
  3. if ($nombre > "5" )
  4. {
  5. //si le nombre est sup à 5
  6. $nombre=$nombre-"5";
  7. $nbfois=$nbfois+"1";
  8. $tbl=array($nbfois=> '5');
  9. //print_r($tbl);
  10. test($nombre,$nbfois);
  11. }
  12. elseif ($nombre == "5" )
  13. {
  14. //si le nombre est egal à 5
  15. $tbl=array(1=> '5');
  16. }
  17. else
  18. {
  19. //si le nombre est inférieur à 5
  20. echo 'nombre inferieur à 5<br>';
  21. echo $nombre;
  22. }
  23. return $tbl;
  24. }
  25. print_r($tbl2);


Les variables sont locale à l'endroit où tu les utilisent.
Si c'est dans une fonction alors ça sera pas la même qu'en dehors des fonctions ni qu'a l'intérieur d'une autre fonction.
Tu fesais un return mais qu'en t'utilisais la fonction tu ne récupérais pas la valeur.
Teste avec les modifs que j'ai fait, t'auras un truc qui s'affiche (surement "array" ).
Pour afficher le contenu d'un tableau ou d'un enregistrement, il faut préciser une à une les cases du tableau.

Reply

Marsh Posté le 01-11-2002 à 19:31:29    

merci mais maintenant il y a un autre probleme, il n'a pas l'air de concerver le $tbl à chaque fois qu'il execute la fonction

Reply

Marsh Posté le 01-11-2002 à 19:41:24    

players a écrit a écrit :

merci mais maintenant il y a un autre probleme, il n'a pas l'air de concerver le $tbl à chaque fois qu'il execute la fonction



Ca, c'est normal, une fois finis l'exécution de la fonction.
Toute les variables de la fonction sont perdus.
Si tu l'utilises plusieurs fois dans un seul script, tu peux mettre la variable $tbl en global ( global $tbl; au début de la fonction) ce qui fait que cette variable continuera d'exister hors une fois sortis de la fonction (le global sert à dire que la variable dont on donne le nom est la même que la variable de même nom qui existe en dehors des fonctions).
 
Par contre, si tu veux que son contenu ne soit pas perdus entre deux appel du script il faudra que tu stockes toutes les valeurs en dehors du programmes (dans un fichier ou une base de donnée par exemple)

Reply

Marsh Posté le 01-11-2002 à 19:54:34    

merci, ça fonctionne, mais un autre probleme :D aparrement à chaque fois que je fais:

Code :
  1. $tbl=array($nbfois=> '5');

il me réinitialise les données du tableau deja inscrite
comment faire pour ajouter des données au tableau sans en perdre ?  
merci

Reply

Marsh Posté le 01-11-2002 à 20:49:33    

players a écrit a écrit :

merci, ça fonctionne, mais un autre probleme :D aparrement à chaque fois que je fais:

Code :
  1. $tbl=array($nbfois=> '5');

il me réinitialise les données du tableau deja inscrite
comment faire pour ajouter des données au tableau sans en perdre ?  
merci



essayes :

Code :
  1. $tbl[$nbfois]='5';


c'est plus de l'objet mais je suis surque ca marche comme ça.
Pour le fare en gardant le côté objet, je sais pas faire.

Reply

Marsh Posté le 01-11-2002 à 20:56:08    

merci beaucoup !!!!!
ça fonctionne trés bien !

Reply

Sujets relatifs:

Leave a Replay

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