我正在尝试创建一个PHP函数,它将另一个PHP函数作为输入。这是一个例子:
function getMean(function){
$allUsers = getAllUsers();
$sum = 0;
foreach ($allUsers as $currentUser ){
$sum =+ (function($currentUser['CONSUMER_ID'], 5, 8))/(8-5);
}
}
答案 0 :(得分:4)
也许这样的事情应该这样做。 PHP有一个名为callback的“类型”,它可以是一个闭包(从PHP 5.3开始),包含对象的函数或数组的名称以及要调用的方法。可以使用call_user_func()
function getMean($callback){
$allUsers = getAllUsers();
$sum = 0;
foreach ($allUsers as $currentUser ){
$sum =+ (call_user_func($callback, $currentUser['CONSUMER_ID'], 5, 8))/(8-5);
}
return $sum;
}
答案 1 :(得分:2)
你需要PHP 5.3才能本机化。
function getMean($function){
$allUsers = getAllUsers();
$sum = 0;
foreach ($allUsers as $currentUser ){
$sum += ($function($currentUser['CONSUMER_ID'], 5, 8))/(8-5);
}
return $sum;
}
getMean(function($consumer_id, $five, $eight) {
return $consumer_id;
});
我运行PHP 5.3-(低于5.3),您需要使用回调(documentation is here)以及call_user_func()
或call_user_func_array()
函数。
答案 2 :(得分:0)
只要function($currentUser['CONSUMER_ID'], 5, 8)
返回
答案 3 :(得分:0)
看起来PHP Eval功能正是您所寻找的。将getMean函数传递给一个字符串,然后将该行更改为$ sum = +(eval($ param).....)
安全性是个问题,因为任何功能都可以通过。
答案 4 :(得分:0)
将函数另存为变量。
$function = function($param1){ //code here }
并将其作为参数传递给您的其他函数。
function getMean($function)
{
//code here
$sum += $function($param);
}
[编辑]
答案 5 :(得分:0)
菲利克斯
答案 6 :(得分:0)
如果你想在php中动态创建一个函数< 5.3然后你坚持使用create_function
。考虑到你如何使用这个函数,除了为array_map
,array_walk
或做简单计算或基本文本处理的事情创建简单函数之外,它真的很疯狂。
如果您正在做一些比这更复杂的事情,那么简单地将函数定义为正常情况会更容易,而不是像其他人所建议的那样将它与call_user_func
或call_user_func_array
一起使用。
请勿使用eval
: - )