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);
}