Phi*_*son 4 php methods class array-map
class something{
public function add_val( $val ){
$array = array();
foreach( $val as $value ) {
$array[] = static::$post[${$value}];
}
return $array;
}
pulblic function somethingelse(){
....
....
$optionsArray['value'] = array_map( 'add_val', array_chunk( $drop_val, count( $optionsArray['heading_x'] ) ) );
....
....
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用array_map()在另一个内调用add_val方法?
使用包含对象的数组和方法名称:
$optionsArray['value'] = array_map(array($this, 'add_val'), array_chunk($drop_val, count($optionsArray['heading_x'])));
Run Code Online (Sandbox Code Playgroud)
你该采取回调作为参数,像大多数其他功能一样array_walk(),call_user_func(),call_user_func_array(),等等.
它是如何工作的?好吧,如果你将一个数组传递给callback参数,PHP就会做类似的事情(for array_map()):
if (is_array($callback)) { // array($this, 'add_val')
if (is_object($callback[0])) {
$object = $callback[0]; // The object ($this)
$method = $callback[1]; // The object method name ('add_val')
foreach ($array as &$v) {
// This is how you call a variable object method in PHP
// You end up doing something like $this->add_val($v);
$v = $object->$method($v);
}
}
}
// ...
return $array;
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到PHP只是遍历你的数组,在每个值上调用方法.没有什么复杂的; 再次只是基本的面向对象的代码.
这可能是也可能不是PHP在内部的作用,但从概念上讲也是如此.