0

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

4

2 回答 2

4

尝试

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

参见示例http://php.net/manual/en/functions.anonymous.php

于 2013-09-27T14:42:49.220 回答
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 手册页,示例 #3 闭包和作用域

于 2013-09-27T14:46:03.540 回答