PHP:将DB Link Identifier传递给array_map的内部函数

时间:2013-04-17 04:14:50

标签: php

根据我之前的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()

1 个答案:

答案 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
);