将变量传递给lambda函数

时间:2013-09-27 14:39:21

标签: php

如何将变量“$ field”传递给lambda函数?

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

消息:未定义的变量:字段

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分: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闭包和范围