关于使用Collection时出现的小问题

关于使用Collection时出现的小问题

$table = [
    'A'=> 'a',
    'B'=> 'b',
    'C'=> 'c',
    'D'=> 'd',
    'E'=> 'e',
];

$list = ['A', 'C', 'E'];

实现的功能是:

1.查找出$table中的键,在$list中出现的位置。
2.当$table中的键不存在于$list中时,则什么都不返回。

结果:
  $result = [0, 2, 4];

我的代码是:

public function test () {
    
    $table = [
        'A'=> 'a',
        'B'=> 'b',
        'C'=> 'c',
        'D'=> 'd',
        'E'=> 'e',
    ];

    $list = ['A', 'C', 'E'];

    $result = collect($table)->map(function ($item, $key) {
        return collect($list)->search($key);
    });

    dd($result);
}

执行后报出的错误是:

Undefined variable: list

我的问题是:为什么找不到变量$list呢?

$list是在函数的外面定义的,使用use。改成

$result = collect($table)->map(function ($item, $key) use ($list) {
    return collect($list)->search($key);
})->filter(function($val){
    return $val !== false;
});

额,刚发现,出来的结果是错误的。。改成:

$result = collect($list)->map(function ($item)  use ($table) {
    return collect($table)->keys()->search($item);
});
perfectboook
修改的评论也不能少于六个字哦!
javascript
修改的评论也不能少于六个字哦!