1

How to pass a variable "$field" to a lambda-function?

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

Message: Undefined variable: field

Epexa
  • 265
  • 2
  • 8

2 Answers2

5

try

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

see the example http://php.net/manual/en/functions.anonymous.php

egig
  • 4,370
  • 5
  • 29
  • 50
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');

If you want to modify the variable use

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

See PHP manual page, Example #3 Closures and scoping

Nate
  • 12,963
  • 4
  • 59
  • 80