将对象方法传递给array_map()

Poo*_*att 23 php arrays

    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;
Run Code Online (Sandbox Code Playgroud)

任何人都可以在WHAT_TO_WRITE_HERE中告诉我可以写什么,以便doSomeWork函数作为第一个参数传递给array_map.和代码正常工作.

并且放弃作为

Array
(
    [0] => 3
    [1] => 4
    [2] => 5
    [3] => 6
    [4] => 7
)
Run Code Online (Sandbox Code Playgroud)

Bol*_*ock 38

要使用对象方法array_map(),请传递包含对象实例和方法名称的数组.对于同一对象范围,请$this正常使用.由于您的方法名称已在您的public $func属性中定义,因此您可以传递$this->func.这适用于接受回调作为参数的大多数函数.

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

return array_map(array($this, $this->func), range($min, $max));
Run Code Online (Sandbox Code Playgroud)

  • 现在刚刚遇到这个问题,这不起作用。我必须做的是在没有 $this 的情况下传递它。即 array_map(array($this, 'func')。不知道为什么第一种方法不起作用。在这里找到它:/sf/ask/379556971/ -类 (5认同)