2009-09-07 7 views
-1

Je dois utiliser une fonction à l'intérieur d'une autre fonction, comment puis-je faire cela? Je me rends compte que la fonction est hors de la portée, je ne comprends pas encore la POO et les classes. Est-ce que quelqu'un peut m'aider?Comment puis-je utiliser une fonction PHP dans une autre fonction?

function some_function ($dfd, $characters, $dssdf, $sdfds){ 

    $sdfs = 'sdfsdf'; //random stuff goes on 

    //this is where my trouble begins I have a scope issue, I need to call this function inside of this function 
    readable_random_string($characters); 
} 

mise à jour ici est l'autre fonction comme demandé

function readable_random_string($length = 6) { 
    $conso = array("b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "r", 
     "s", "t", "v", "w", "x", "y", "z"); 
    $vocal = array("a", "e", "i", "o", "u"); 
    $password = ""; 
    srand((double)microtime() * 1000000); 
    $max = $length/2; 
    for ($i = 1; $i <= $max; $i++) { 
     $password .= $conso[rand(0, 19)]; 
     $password .= $vocal[rand(0, 4)]; 
    } 
    return $password; 
} 
+0

pouvez vous montrer la readable_random_string fonctionner ainsi, de sorte que nous pouvons voir ce que le problème de portée est – bumperbox

+0

certainement vous pouvez le faire, c'est l'une des bases de la plupart des langages de programmation. Quel est exactement le problème que vous rencontrez? – Aziz

+0

@ bumperbox J'ai ajouté que la partie – JasonDavis

Répondre

3

Je ne sais pas pourquoi cela a fonctionné pour moi, mais il l'a fait:

<?php 

function alpha ($test) { 
     $test = $test." ".$test; 
     return $test; 
} 

function beta ($var) { 
     echo alpha($var); 
} 

beta("Hello!"); 
//End Result : "Hello! Hello!" 
?> 

Peut-être que si quelqu'un pouvait expliquer pourquoi ce qui précède fonctionne, il serait utile de répondre à la question d'ensemble?

+0

lire mon post ci-dessus, C'était une erreur de ma part – JasonDavis

0

Peut-être que vous recherchez cette fonction:

function foo($message) { 
    $function = 'bar'; 
    $function($message); // calls bar(), or whatever is named by $function 
} 

function bar($message) { 
    echo "MESSAGE: $message\n"; 
} 

foo("Hello"); // prints "MESSAGE: Hello" 
1

function readable_random_string() renvoie la chaîne de mot de passe. Vous pouvez, par exemple, affecter cette valeur de retour à une variable dans some_function().

$password = readable_random_string($characters); 

BTW: De son nom je me attendrais $ caractères pour contenir .... des personnages comme 'abc' ou un tableau ('a', 'b', 'c'), et non pas la longueur. Essayez de garder les noms des variables "parlant".

0

Il se trouve qu'il n'y a pas de problème de portée car je pensais qu'il y avait d'abord parce qu'il ne produisait rien, le problème était ma fonction a un retour au lieu d'imprimer à l'écran et je ne l'ai pas réalisé jusqu'à ce que , désolé pour la question gaspillée = (

function readable_random_string($length = 6) { 
    $conso = array("b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "r", 
     "s", "t", "v", "w", "x", "y", "z"); 
    $vocal = array("a", "e", "i", "o", "u"); 
    $password = ""; 
    srand((double)microtime() * 1000000); 
    $max = $length/2; 
    for ($i = 1; $i <= $max; $i++) { 
     $password .= $conso[rand(0, 19)]; 
     $password .= $vocal[rand(0, 4)]; 
    } 
    return $password; 
} 

retour de mot de passe $;

devrait être

echo $password; 

Ou bien lorsque vous appelez la fonction j'echo/imprimer

+0

Avec votre srand, il n'y a que 1000000 possibilités pour le mot de passe. Essayez: srand (((double) microtime() * 2000000000) + (temps()% 2000) +1); –

-1

si vous utilisez return $password alors vous devez utiliser $pass = readable_random_string($characters);

ou si vous utilisez echo $password, vous pouvez utiliser readable_random_string($characters);

Questions connexes