【问题标题】:PHP : Passing DB Link Identifier into array_map's inner functionPHP:将 DB 链接标识符传递给 array_map 的内部函数
【发布时间】:2013-04-17 04:14:49
【问题描述】:

根据我之前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 代码片段位于类的公共函数中。我的问题是:如何在array_map() 的内部函数中引用$this->db

【问题讨论】:

  • 你为什么不使用准备好的语句?
  • 请阅读我之前的问题,准备好的陈述不适用于该案例。

标签: php


【解决方案1】:

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

$db = $this->db;
$keyword_tokens = array_map(
    function($keyword) use ($db) {
        return $db->escape_string(trim($keyword));
    }, $keyword_tokens
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2018-04-28
    • 2018-09-26
    • 2017-10-14
    相关资源
    最近更新 更多