根据我之前的question回答,我必须使用array_map()
的内部函数,如下所示:
$keyword_tokens = array_map(
function($keyword) {
return $this->db->escape_string(trim($keyword));
}, $keyword_tokens
);
$this->db
是MySQLi数据库包装器,而其函数escape_string()
是mysqli_real_escape_string()
的包装器。
问题是,PHP提示错误:
致命错误:不在对象上下文中时使用$ this
但是,array_map
代码段位于类中的公共函数内。我的问题是:如何在$this->db
的内部函数中引用array_map()
?
答案 0 :(得分:2)
使用use
关键字在闭包的范围中包含变量,但如果您使用的是5.4之前的PHP版本,则必须使用不同的变量$this
。也许这......
$db = $this->db;
$keyword_tokens = array_map(
function($keyword) use ($db) {
return $db->escape_string(trim($keyword));
}, $keyword_tokens
);