2013-09-27 5 views
0

Как передать переменную «$ field» в лямбда-функцию?Передача переменной в лямбда-функцию

function implode_assoc_array($array, $field) 
{ 
    // $ids = array_column($array, $field); PHP 5.5! 
    $ids = array_map(function($item) { return $item[$field]; }, $array); 
    return implode(', ', $ids); 
} 

implode_assoc_array($my_multidimensional_array, 'id'); 

Сообщение: Undefined переменной: поле

ответ

0
function implode_assoc_array($array, $field) 
{ 
    // $ids = array_column($array, $field); PHP 5.5! 
    $ids = array_map(function($item) use ($field) { return $item[$field]; }, $array); 
    return implode(', ', $ids); 
} 

implode_assoc_array($my_multidimensional_array, 'id'); 

Если вы хотите изменить переменную Использовать

$ids = array_map(function($item) use (&$field) { return $item[$field]; }, $array); 

См. PHP manual page, Пример № 3 Закрытие и область охвата

Смежные вопросы