foreach 循环问题 if 无法进行判断

发布于 2022-09-13 00:23:21 字数 1214 浏览 25 评论 0

    public function batch(Request $request)
    {
        $ids =  $request->input('id');  //["1","2"]
        $tags = $request->input('tags'); //["发货","新产品"]
        $Influencers = Influencers::whereIn('id', $ids)->pluck('tags')->toArray(); 
        //数据库里面的标签 ["发货","新产品"]
        foreach ($Influencers as $Influencer) {
            $dbTags = explode(',', preg_replace('/\s+/', '', $Influencer));
            foreach ($tags as $tag) {
                foreach ($dbTags as $t) {
                    foreach ($ids as $id) {
                        if ($t === $tag) { 
                        //我想用户传进来了的标签 跟数据库的标签进行一个判断如果不存在在添加 如果存在就不添加,
                            Influencers::where('id', $id)->update(['tags' => DB::raw("CONCAT_WS(',', tags, ' $t')")]);
                        } else {
                            print "<li>$t - $tag -  $id</li>";
                        }
                    }
                }
            }
        }
    }

我测试了很多方法都不知道怎么解决,
我想用户传进来了的标签 跟数据库的标签进行判断如果不存在在添加 如果存在就不添加,
举个例子:
比如数据库已经有 拒绝,成功,就不做任何的操作
如果数据库只有,拒绝,用户如果传过来是 ['拒绝','成功'] 就吧成功添加进去
所有传进来的数据都是[数组]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少钕鈤記 2022-09-20 00:23:21

这么多层嵌套循环,应该做优化

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文