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;