Page 1 sur 1

Variable non reconnue par une fonction

Posté : 30 déc. 2006, 18:48
par HD
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

Posté : 30 déc. 2006, 18:54
par jojolapine
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...

Posté : 30 déc. 2006, 18:58
par Truc
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 :)

Posté : 30 déc. 2006, 18:59
par HD
mince c'est vrai, j'aurai du y penser :oops:
global $prixn ;
c'est parfait
merci bien !

Posté : 30 déc. 2006, 19:04
par HD
:? 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

Posté : 30 déc. 2006, 19:06
par jojolapine
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

Posté : 30 déc. 2006, 19:07
par HD
merci ! =D>

Posté : 30 déc. 2006, 19:08
par Xenon_54
D'où ça sort ça? $dataresqq[$prixn]

Quel est exactement le type de déclaration globale que tu veux faire?

Posté : 30 déc. 2006, 19:16
par HD
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