2010-06-23 10 views
1

Comment faire écho une variable à partir de la fonction? Ceci est un exemple de code.Comment faire écho une variable à partir de la fonction

 
function test() { 
    $foo = 'foo'; //the variable 
} 

test(); //executing the function 

echo $foo; // no results in printing it out 

+1

Vous essayez simplement d'imprimer la variable? Pourquoi ne pas l'imprimer dans la fonction? Est-ce que vous essayez de le retourner? Ou essayez-vous simplement de l'imprimer APRÈS le retour? – MJB

+0

vous ne pouvez pas imprimer une variable qui n'est pas déclarée avant la fonction. – user29964

Répondre

11

La réponse immédiate à votre question serait d'importer $foo dans le périmètre de la fonction:

function test() { 

    global $foo; 
    $foo = 'foo'; //the variable 
} 

En savoir plus sur la portée des variables en PHP here.

Ceci est cependant une mauvaise pratique dans la plupart des cas. Vous souhaiterez généralement renvoyer la valeur souhaitée à partir de la fonction et l'affecter à $foo lors de l'appel de la fonction.

function test() 
    { 
     return "foo"; 
    } 

    $foo = test(); 

    echo $foo; // outputs "foo" 
3

L'étendue de la vie variable est juste à l'intérieur de la fonction. Vous devez le déclarer global pour pouvoir y accéder en dehors de la fonction.

Vous pouvez faire:

function test() { 
    $foo = 'foo'; //the variable 
    echo $foo; 
} 

test(); //executing the function 

Ou déclarer global comme l'a suggéré. Pour ce faire donc, consultez le manuel ici: http://php.net/manual/en/language.variables.scope.php

2
function test() { 
    return 'foo'; //the variable 
} 

$foo = test(); //executing the function 

echo $foo; 
2

votre variable $foo n'est pas visible en dehors de la fonction, car il existe seulement dans le périmètre de la fonction. Vous pouvez faire ce que vous voulez plusieurs façons:

Echo d'une fonction elle-même:

function test() { 
    $foo = 'foo'; 
    echo $foo; 
} 

Echo un résultat de retour:

function test() { 
    $foo = 'foo'; //the variable 
    return $foo; 
} 

echo test(); //executing the function 

Faire la variable globale

$foo = ''; 

function test() { 
    Global $foo; 
    $foo = 'foo'; //the variable 
} 

test(); //executing the function 

echo $foo; 
0

Personnellement Je ferais.

function test(&$foo) 
{ 
    $foo = 'bar'; 
} 

test($foobar); 

echo $foobar; 

Utilisation du esperluette dans la fonction des paramètres section indique la fonction de « mondialisation » des variables d'entrée de sorte que toute modification de cette variable changeront directement l'un à l'extérieur du périmètre de la fonction!

+0

Tant que $ foobar est défini avant d'appeler test() pour la lisibilité ... malgré le fait que PHP va créer $ foobar à la volée –

+0

$ foobar devrait être créé par PHP Hors de sa portée! sans que l'application de l'utilisateur ne le crée, donc mon exemple devrait fonctionner correctement en créant $ foobar dans la portée externe! - http://www.php.net/manual/fr/language.references.pass.php – RobertPitt

Questions connexes