在函数内部使用函数变量

时间:2016-11-22 14:03:25

标签: php function class

我正在尝试访问$managers函数中的change变量。

public function ManagerPerDay() {
        $query = $this->mysqli()->query('SELECT
                                            manager,
                                            count(manager) AS count
                                        FROM
                                            DATA
                                        GROUP BY
                                            manager
                                        ORDER BY
                                            count DESC');
        $data = $query->fetch_all();

        $managers = $this->GetManagers();

        function Change($n)
        {
            $name = $managers[array_search($n[0], array_column($managers, 'id'))]['name'];
            $n[0] = $name;
            return $n;
        }

        $data = array_map('Change', $data);

        array_unshift($data, ['Manager', 'Per Day']);
        return $data;
    }

我尝试了全球$经理;在改变功能,但它也不起作用。

2 个答案:

答案 0 :(得分:2)

使用array_walk可以添加参数

function Change(&$n, $key, $managers)
        {
            $name = $managers[array_search($n[0], array_column($managers, 'id'))]['name'];
            $n[0] = $name;            
        }

        array_walk($data, 'Change', $managers);

答案 1 :(得分:0)

您可以使用use关键字将该变量传递给该函数。像这样的东西:

$data = array_map(function($n) use ($manager) {
    $name = $managers[array_search($n[0], array_column($managers, 'id'))]['name'];
    $n[0] = $name;
    return $n;
}, $data);