2009-12-04 7 views
1

Im avoir du mal à obtenir une fonction dans une fonction de travail, pensez-vous que ce que j'ai ci-dessous est fait rigth? Je ne reçois pas les résultats escomptés, si vous pouviez faire la lumière sur les fonctions dans les fonctions, je l'apprécierais.fonction dans la fonction en PHP

grâce

function test1() 

{ 

    global x; 

    $x=123; 

    function test2() 
    { 
    echo $x; 
    } 

    test2(); 

} 
+2

Quel est votre résultat attendu? Cette construction n'a pas de sens. Qu'est-ce que vous en avez besoin? –

Répondre

3

Cela fonctionne, mais la portée de test2() est limitée. Par exemple, cela fonctionne:

[[email protected] ~]$ cat y.php 
<?php 
function test1() 
{ 
     global $x; 
     $x=123; 

     function test2() 
     { 
       global $x; 
       echo $x; 
     } 

     test2(); 
} 

test1(); 
?> 
[[email protected] ~]$ php -f y.php 
123[[email protected] ~]$ 
+0

wallyk merci pour la perspicacité, cela fonctionne en effet maintenant. Pouvez-vous expliquer pourquoi vous avez besoin de redéclarer x comme global dans la deuxième fonction? – chicane

+0

C'est pour que "$ x" puisse être vu en dehors des fonctions respectives. Si '$ x = 123' était défini en dehors de' test1() ', il n'y aurait pas besoin de' test1() 'pour avoir' global $ x'. – wallyk

0

ne peut pas vous inclure tout comme une autre fonction en dehors de la première fonction (test1)? J'ai du mal à imaginer un cas d'utilisation pour cela.

0

Vous n'appelez pas la fonction test2, donc il n'y a aucune raison pour qu'elle renvoie $ x. En outre, vous devez construire la fonction à l'extérieur, il n'y a pas de valeur ajoutée dans ce cas.