BARNI
BARNI

Reputation: 142

use variable inside function within function

i am trying to access $managers variable in change function.

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;
    }

i have tried global $managers; in change function but it also does not work.

Upvotes: 1

Views: 67

Answers (2)

laurent
laurent

Reputation: 90776

You could use the use keyword to pass that variable to the function. Something like this for example:

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

Upvotes: 0

nospor
nospor

Reputation: 4220

Use array_walk which allows you to add your parameters

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

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

Upvotes: 2

Related Questions