传递函数变量时如何避免php函数调用?
我有一个这样的函数变量传递函数变量时如何避免php函数调用?,php,function,parameters,Php,Function,Parameters,我有一个这样的函数变量 $aName = "My Name"; 函数需要像这样传入: $sayHelloFunction = function sayHello($aName){ echo($aName); } $printFunction = function($args) { print $args['lastname'].', '.$args['firstname']; }; function runningFunction($f, $a) { $f(
$aName = "My Name";
函数需要像这样传入:
$sayHelloFunction = function sayHello($aName){
echo($aName);
}
$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
}
}
然后,我有一个方法负责执行sayHelloFunction:
runningFunction($sayHelloFunction($aName));
在runningFunction中,它会有一些执行函数的条件,但当我将“$sayHelloFunction($aName)”传递给runningFunction时,它会自动执行,但我也想传递变量$aName,我如何实现它?多谢各位
runningFunction($sayHelloFunction, $aName);
简单
简化。正如xconspirist建议的那样,将
$aName
作为单独的参数传递给函数
有关的详细信息可以在PHP站点上找到。正如Xconspirist建议的那样,将$aName作为单独的参数传递给函数
有关的详细信息可以在PHP网站上找到。您必须分别传递参数。但是,您可以将它们包装在一个数组中,以便将它们作为单个参数传递给
runningFunction
,如下所示:
$sayHelloFunction = function sayHello($aName){
echo($aName);
}
$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
}
}
如果您想让动态函数获得“正确”的参数,那么我看不出有什么办法可以避免这种情况:
$sayHelloFunction = function sayHello($aName){
echo($aName);
}
$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
}
}
您必须分别传递参数。但是,您可以将它们包装在一个数组中,以便将它们作为单个参数传递给
runningFunction
,如下所示:
$sayHelloFunction = function sayHello($aName){
echo($aName);
}
$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
}
}
如果您想让动态函数获得“正确”的参数,那么我看不出有什么办法可以避免这种情况:
$sayHelloFunction = function sayHello($aName){
echo($aName);
}
$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
}
}
将参数作为数组传递,然后使用
调用\u user\u func\u array()
调用函数
这样,您的runningFunction()
将是绝对抽象的(根据您的要求),它可以调用任何类型的函数,传递正确数量的参数是您的责任
function runningFunction ($callback, $parameters=array()) {
call_user_func_array($callback, $parameters);
}
runningFunction($sayHelloFunction, array($aName));
将参数作为数组传递,然后使用
调用\u user\u func\u array()
调用函数
这样,您的runningFunction()
将是绝对抽象的(根据您的要求),它可以调用任何类型的函数,传递正确数量的参数是您的责任
function runningFunction ($callback, $parameters=array()) {
call_user_func_array($callback, $parameters);
}
runningFunction($sayHelloFunction, array($aName));
调用
runningFunction
function runningFunction($func) {
$func();
}
runningFunction(function() {
$sayHelloFunction($aName));
// You can do more function calls here...
});
调用
runningFunction
function runningFunction($func) {
$func();
}
runningFunction(function() {
$sayHelloFunction($aName));
// You can do more function calls here...
});
我认为你把php和javascript@Ibrahim-这是一个非常有效的PHP问题。我认为你混淆了PHP和javascript@Ibrahim-这是一个非常有效的PHP问题。但是我的sayHelloFunction需要param,我不想在runningFunction中分配param…但是我的sayHelloFunction需要param,我不想在runningFunction中分配参数……我想让runningFunction抽象,这不取决于$sayHelloFunction,我不介意再给runningFunction传递一个参数,但我正在考虑,如果我有一个参数require,比如$sayHelloFunction,它需要两个参数,$aName,$aTime,然后,我需要为runningFunction多写一个参数,这不是我想要的wt…我想让runningFunction抽象化,这不取决于$sayHelloFunction,我不介意再给runningFunction传递一个参数,但我正在考虑,如果我还有一个参数require,比如$sayHelloFunction,它需要两个参数,$aName,$aTime,然后,我需要为运行函数再编写一个参数,这不是我想要的wt….
call\u user\u func\u array()
基本上执行您在switch
语句中执行的操作。call\u user\u func\u array()
基本上执行您在switch
语句中执行的操作。