通常我使用带有过程代码的array_map,但在这种情况下我在OOP中工作,回调应该是“this-> id2areas”,但它不起作用。有没有把这个回调用OOP?
ERROR MESSAGE: array_map() expects parameter 1 to be a valid callback, function 'this->id2area' not found or invalid function name
我的代码 ================================================== ===============================
$this->context->assign('user_areas', implode(', ', array_map('id2area', explode(',', $this->user['areas']))));
explode(',', $this->user['areas']))));
function id2area($id) {//callback
if ($id == 0) {
return 'National';
}
$query = "SELECT area FROM area WHERE id = $id";
return DB::fetch_instance()->slave->fetchColumn($query);
}
答案 0 :(得分:13)
在PHP中,您可以使用数组将对象和方法调用关联为可调用
array_map(array($this, 'id2area'), $array);
答案 1 :(得分:7)
对象的PHP回调与全局函数略有不同。
//Global function callback
array_map('id2area', $data);
// Object function
array_map(array($object, 'id2area'), $data)
// - or -
array_map(array($this, 'id2area'), $data)
// Static class function
array_map(array('Class_Name', 'id2area'), $data)
// - or -
array_map('Class_Name::id2area', $data)
答案 2 :(得分:3)
您也可以将其作为匿名函数执行此操作,如:
array_map(
function($arg) {
return $this->id2area($arg);
},
explode(',', $this->user['areas'])
);