Variable non reconnue par une fonction

HD
Mammouth du PHP | 1181 Messages

30 déc. 2006, 18:48

bonjour
j'ai un (très) long code qui, vers la fin définit puis exploite une fonction :
function afficher_tableau($tableau) 
    {
    foreach ($tableau as $posit=>$valeur) 
        {
        if(is_array($valeur)) 
            { 
            afficher_tableau($valeur);
            }
        
        else
            {
                  ..............................
                  echo $prixn ;
            }
        } 
    } 

afficher_tableau($tableau);
Si je met echo $prixn ; avant la fonction, l'affichage de $prixn se fait correctement.
Problème : la fonction ne reconnait pas $prixn !!

Notice: Undefined variable: prixn in
:?
d'où vient le problème ? et comment le résoudre ?
merci d'avance pour votre aide
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

ViPHP
ViPHP | 3607 Messages

30 déc. 2006, 18:54

c'est normal, car la portée d'une variable définie dans le corp d'une page php (cad, hors fonctions et classes) ne peut pas être atteinte directement dans une fonction ou classe, il faut d'abord déclarer cette variable comme globale, grace au mot clef global...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 déc. 2006, 18:58

ou la passer en paramètre à la fonction.

Et puis faire un return de la variable... j'aime pas voir des fonctions qui affichent ce qu'elles peuvent renvoyer :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

HD
Mammouth du PHP | 1181 Messages

30 déc. 2006, 18:59

mince c'est vrai, j'aurai du y penser :oops:
global $prixn ;
c'est parfait
merci bien !
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

HD
Mammouth du PHP | 1181 Messages

30 déc. 2006, 19:04

:? problème si la variable a cette forme :
$dataresqq[$prixn]

donc
global $dataresqq[$prixn] ;
donne l'erreur suivante :
Parse error: parse error, expecting `','' or `';'' in ***** on line 756
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

ViPHP
ViPHP | 3607 Messages

30 déc. 2006, 19:06

encore normal, il faut d'abord déclarer $prixn en global, et ensuite $dataresq en global, mais à ce moment là, ça devient plus simple de passer la variable en argument de ta fonction

HD
Mammouth du PHP | 1181 Messages

30 déc. 2006, 19:07

merci ! =D>
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Mammouth du PHP | 1885 Messages

30 déc. 2006, 19:08

D'où ça sort ça? $dataresqq[$prixn]

Quel est exactement le type de déclaration globale que tu veux faire?
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

HD
Mammouth du PHP | 1181 Messages

30 déc. 2006, 19:16

finalement je n'avais pas bien déclaré $dataresqq[$prixn] comme global car c'était une erreur "pas très intelligente" :D : je faisait la déclaration apres :oops: l'avoir utilisé
donc problème résolu, merci à tous
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]