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'] ) ) );
....
....
}
}
如何使用 array_map() 在另一个中调用 add_val 方法??
最佳答案
使用包含对象和方法名称的数组:
$optionsArray['value'] = array_map(array($this, 'add_val'), array_chunk($drop_val, count($optionsArray['heading_x'])));
您对大多数其他将回调作为参数的函数执行相同的操作,例如 array_walk()
、call_user_func()
、call_user_func_array()
等等。
它是如何工作的?好吧,如果您将一个数组传递给回调参数,PHP 会做一些类似的事情(对于 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;
在这里您可以看到 PHP 只是循环遍历您的数组,对每个值调用方法。没什么复杂的;同样只是基本的面向对象代码。
这可能是也可能不是 PHP 内部的工作方式,但在概念上是相同的。
关于php - 在类中使用公共(public)函数回调的数组映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4767704/