将变量传递给回调PHP

时间:2014-03-06 15:16:21

标签: php callback

我在下面有一个函数被调用并传递一个数组。我还想传递一个字段(或键)名称,以便它可以重复使用。当我尝试在回调中传递$ field时,我得到一个错误,即没有定义$ field。如果我使用文字,它的效果很好。

function array_map_recursive($array,$field) {
        $sum = 0;
        foreach ($array as $key => $value) {
           foreach ($value as $key2 => $value2) {
               $sum += array_sum(array_map(function($item){return $item[$field];},$value[$key2]));
           }
        }
        return $sum;
}

称为:

number_format(array_map_recursive($dept_catg_grp_descs,"total_ty_yest_sales"))

3 个答案:

答案 0 :(得分:7)

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

$field变量“导入”函数。

答案 1 :(得分:0)

简单:您需要声明要在闭包中使用外部作用域中的哪些变量,例如:

function array_map_recursive($array,$field) {
    $sum = 0;
    foreach ($array as $key => $value) {
       foreach ($value as $key2 => $value2) {
           $sum += array_sum(array_map(function($item) use($field) {return $item[$field];},$value[$key2]));
       }
    }
    return $sum;
}

请注意使用子句。

答案 2 :(得分:0)

您应该使用'use'

传递参数