拉拉维尔未定义变量,array_where


laravel undefined variable, array_where

private function delete_read($id)
{
    $unread = unserialize(Auth::user()->unread);
    if (in_array($id, $unread))
    {
        $new = array_where($unread, function ($key, $value) {
            return $value != $id;
        });
        dd($new);
    }

}

我正在尝试从未读帖子列表中删除已读帖子。上面的代码给了我一个Undefined variable: id错误,它指的是这行代码:return $value != $id;

所以我的问题是如何将变量传递到array_where方法中?

顺便说一句,除了

unset之外,还有没有更好的方法可以从数组中删除给定的元素?还是unset会比我的array_where方法更好?

谢谢。

由于$id是在你传入的回调函数之外定义的,所以array_where()此变量超出了范围,默认情况下不可用。 但是,您可以尝试使用 use 关键字来强制$id在范围内:

if (in_array($id, $unread))
{
    $new = array_where($unread, function ($key, $value) use ($id) {
        return $value != $id;
    });
    dd($new);
}