How to access others variable inside of array_walk? How to access others variable inside of array_walk? codeigniter codeigniter

How to access others variable inside of array_walk?


You can use use keyword:

array_walk($profile_items, function(&$a) use($id) {

so,

$id = 10;array_walk($profile_items, function(&$a) use($id) {    $count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');    $a['selected'] = $id;});echo "<pre>";print_r($profile_items);

To inherit by reference, add ampersand:

array_walk($profile_items, function(&$a) use(&$id) {


    $sample = [        ['id'=>2, 'name' => 'one'],        ['id'=>3, 'name' => 'two'],    ];    $id = 2;    function test_alter(&$item1, $key, $prefix)    {       if($item1['id'] == $prefix){        $item1['name'] =  $item1['name']." modified";        }                }    array_walk($sample, 'test_alter', $id);    echo "<pre>";    print_r($sample);

Output

Array(    [0] => Array        (            [id] => 2            [name] => one modified        )    [1] => Array        (            [id] => 3            [name] => two        ))


The scope of a variable is the context within which it is defined. For the most part all PHP variables only have a single scope. This single scope spans included and required files as well.

Using global keyword outside a function is not an error. It can be used if the file is included from inside a function.

$id = 10;array_walk($profile_items, function(&$a) {global $id;    $count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');    $a['selected'] = $id;});echo "<pre>";print_r($profile_items).exit;