【问题标题】:laravel undefined variable, array_wherelaravel 未定义变量,array_where
【发布时间】:2016-04-19 00:32:43
【问题描述】:
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 方法更好吗?

谢谢。

【问题讨论】:

    标签: php arrays laravel-5.2


    【解决方案1】:

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

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

    【讨论】:

    • 不错的答案!非常感谢
    猜你喜欢
    • 2019-04-29
    • 1970-01-01
    • 2015-05-15
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多