将对象方法传递给 array_map()

2022-08-30 14:17:19
    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。和代码正常工作。

并送出作为

Array
(
    [0] => 3
    [1] => 4
    [2] => 5
    [3] => 6
    [4] => 7
)

答案 1

要将对象方法与 结合使用,请传递一个包含对象和对象方法名称的数组。对于同一对象范围,请照常使用。由于方法名称是在属性中定义的,因此可以传递 。array_map()$thispublic $funcfunc

作为旁注,外面的括号不是必需的。array_map()

return array_map( [$this, 'func'], range($min, $max));

答案 2

下面的代码提供了来自数组的电子邮件数组,该数组包含具有方法的类的实例:$usersgetEmail

    if(count($users) < 1) {
        return $users; // empty array
    }
    return array_map(array($users[0], "getEmail"), $users);