这个想法很简单,但是我还无法实现。

这是代码

(我已经更改了变量的名称以描述它们的用法)

    $games = Game::all();
    $games_already_added = $member->games()->lists('id');

    $games = $games->filter(function($game){
        global $games_already_added;
        if(!in_array($game->id,$games_already_added)){
            return true;
        }
    });

执行代码后,我收到错误消息
in_array() expects parameter 2 to be array, null given
我已经验证了$games_already_added变量是在外部作用域上定义的并且包含项。

有什么方法可以将$games_already_added变量作为参数传递给集合的过滤器函数吗?

任何建议或指导都将受到高度赞赏!

谢谢!

最佳答案

它不是全局的,但可以与Closure一起使用的use:

$games = $games->filter(function($game) use ($games_already_added) {
    if(!in_array($game->id,$games_already_added)){
        return true;
    }
});

关于php - Laravel : Passing extra parameter on Collection filtering,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24597499/

10-13 00:55