1

根据我之前的问题的回答,我必须使用内部函数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->dbarray_map()'s 内部函数中引用?

4

1 回答 1

2

使用use关键字将变量包含在闭包的范围内,但$this如果您使用的是 5.4 之前的 PHP 版本,则必须使用不同的变量。或许这...

$db = $this->db;
$keyword_tokens = array_map(
    function($keyword) use ($db) {
        return $db->escape_string(trim($keyword));
    }, $keyword_tokens
);
于 2013-04-17T04:25:01.233 回答