我在下面有一个函数被调用并传递一个数组。我还想传递一个字段(或键)名称,以便它可以重复使用。当我尝试在回调中传递$ 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"))
答案 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'
传递参数