我有一个像这样的函数变量......
$aName = "My Name";
该函数需要像这样传入:
$sayHelloFunction = function sayHello($aName){
echo($aName);
}
比,我有一个负责执行sayHelloFunction的方法:
runningFunction($sayHelloFunction($aName));
在runningFunction中,它会有一些条件来执行该函数,但是当我将“$ sayHelloFunction($ aName)”传递给runningFunction时,它会自动执行,但我也希望传递变量$ aName,我怎么能实现它?谢谢。
答案 0 :(得分:2)
runningFunction($sayHelloFunction, $aName);
Simples。
答案 1 :(得分:1)
您必须单独传递参数。但是,您可以将它们包装在一个数组中,以便您可以将它们作为单个参数传递给runningFunction
,如下所示:
$printFunction = function($args) {
print $args['lastname'].', '.$args['firstname'];
};
function runningFunction($f, $a) {
$f($a);
}
$firstname = 'Bob';
$lastname = 'Smith';
$functionArguments = array(
'firstname' => $firstname,
'lastname' => $lastname
);
runningFunction($printFunction, $functionArguments);
<击> 如果你想让你的动态函数获得“正确的”参数,那么我认为没有办法解决这样的问题:
function runningFunction($f, $a) {
switch(count($a)) {
0: $f(); break;
1: $f($a[0]); break;
2: $f($a[0], $a[1]); break;
3: $f($a[0], $a[1], $a[2]); break;
// and so on
}
}
击> <击> 撞击>
答案 2 :(得分:1)
将参数作为数组传递,然后使用call_user_func_array()
调用您的函数。
这样你的runningFunction()
将是绝对抽象的(按照你的要求),它可以调用任何类型的函数,你有责任传递正确数量的参数。
function runningFunction ($callback, $parameters=array()) {
call_user_func_array($callback, $parameters);
}
runningFunction($sayHelloFunction, array($aName));
答案 3 :(得分:0)
阴谋家建议将$aName
作为函数的单独参数传递。
有关Variable Functions的详细信息,请访问PHP网站。
答案 4 :(得分:0)
调用runningFunction
function runningFunction($func) {
$func();
}
runningFunction(function() {
$sayHelloFunction($aName));
// You can do more function calls here...
});