Как получить доступ к другим переменным внутри array_walk?

У меня есть переменная $id = 10нужно использовать внутри array_walk(), Как ниже:

$id = 10;
array_walk($profile_items, function(&$a) {
$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;

Когда я использовал $id переменная внутри array_walk() это показать ошибку.

Сообщение: неопределенная переменная: id

Любое решение?

Спасибо за совет

0

Решение

Ты можешь использовать use ключевое слово:

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

так,

$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);

Для наследования по ссылке добавьте амперсанд:

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

Другие решения

Вы можете передать $ id в вашу функцию array_walk, используя:

  $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).exit;
0

Область действия переменной — это контекст, в котором она определена. По большей части все переменные PHP имеют только одну область видимости. Эта единая область действия включает и необходимые файлы.

Использование глобального ключевого слова вне функции не является ошибкой. Может быть
используется, если файл включен изнутри функции.

$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;
0

добавить параметр в use() так, если вы хотите изменить $id, передать его по ссылке с &в противном случае по значению.

array_walk($value, function($v, $k) use ($id){});

или же

array_walk($value, function($v, $k) use (&$id){});
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector