class theClass{
function doSomeWork($var){
return ($var + 2);
}
public $func = "doSomeWork";
function theFunc($min, $max){
return (array_map(WHAT_TO_WRITE_HERE, range($min, $max)));
}
}
$theClass = new theClass;
print_r(call_user_func_array(array($theClass, "theFunc"), array(1, 5)));
exit;
任何人都可以告诉我在WHAT_TO_WRITE_HERE中可以写什么,以便doSomeWork函数作为第一个参数传递给array_map。和代码正常工作。
并发出put as
Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 6
[4] => 7
)
答案 0 :(得分:37)
要将对象方法与array_map()
一起使用,请传递包含对象实例和方法名称的数组。对于同一对象范围,请照常使用$this
。由于您的方法名称已在public $func
属性中定义,因此您可以传递$this->func
。这适用于接受callback作为参数的大多数函数。
作为旁注,array_map()
之外的括号不是必需的。
return array_map(array($this, $this->func), range($min, $max));
答案 1 :(得分:1)
以下代码提供了来自$users
数组的电子邮件数组,其中包含使用getEmail
方法的类的实例:
if(count($users) < 1) {
return $users; // empty array
}
return array_map(array($users[0], "getEmail"), $users);