无法访问数组映射函数内部的变量

时间:2018-06-28 07:56:05

标签: php

我想在多维数组中添加键,以便具有array_map函数

$keywords = [['keyword'=>'designing'],['keyword'=>'logo designing']];
$user_id = 5;
$keywords = array_map(function($arr){
    return $arr + ['user_id' => $user_id];
}, $keywords);

我希望输出为

$keywords = [['user_id'=>5,'keyword'=>'designing'],['user_id'=>5,'keyword'=>'logo designing']];

但是它显示了未定义的变量user_id

2 个答案:

答案 0 :(得分:1)

变量$user_id被作为not known in the anonymous function的第一个参数传递给array_map()

您可以使用use keyword轻松解决此问题,该函数使函数继承父上下文中定义的$user_id变量。

$keywords = [['keyword'=>'designing'],['keyword'=>'logo designing']];
$user_id = 5;

$keywords = array_map(function($arr) use ($user_id) {
    return $arr + ['user_id' => $user_id];
}, $keywords);

答案 1 :(得分:0)

添加一个简单的use语句:

$keywords = array_map(function($arr) use ($user_id) {
    return $arr + ['user_id' => $user_id];
}, $keywords);