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

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

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

阅读 1.9k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题