2016-09-21 18 views
3

Я пытаюсь динамически использовать массив массива, столбец в массиве может измениться, поэтому я не хочу указывать его с помощью строки, но хочу использовать переменную, чтобы указать ее, это не работает. Пробовал все следующие комбинации, он возвращает null.Array map использовать переменную, чтобы идентифицировать столбец для возврата

$column = 'MANAGER_GROUP'; 
array_map(function($el){ return $el['"'.$column.'"']; }, $dbData); 
array_map(function($el){ return $el["$column"]; }, $dbData); 
array_map(function($el){ return $el[$column]; }, $dbData); 

//this works though 
array_map(function($el){ return $el["MANGER_GROUP"]; }, $dbData); 
+1

Вы должны использовать ключевое слово "use" в php Чтобы получить доступ к переменным вне вашей функции Closure, которые в вашем случае выполняют функцию обратного вызова .. см. Ответ Ниже Tadas – victor

ответ

5

У анонимной функции есть своя область действия, она не имеет доступа к родительской области автоматически. Вы должны явно указать переменную, которая будет передана в анонимный контекст функции.

$column = 'MANAGER_GROUP'; 
array_map(function($el) use ($column) { 
    return $el[$column]; 
}, $dbData);