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->dbでどのように参照できますか?array_map()

4

1 に答える 1

2

キーワードを使用useしてクロージャーのスコープに変数を含めますが、$this5.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 に答える