You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP按用户组控制图片显隐:修复多组匹配循环逻辑问题

修复图片受众分组显示逻辑缺陷

背景与需求

网站用户可在个人资料中选择组1/2/3,系统将用户划分至三个数组:$group1_recipients[]、$group2_recipients[]、$group3_recipients[]。示例数据如下:

$group1_recipients = ["user A","user B","user C"],
$group2_recipients = ["user D","user B","user E"], 
$group3_recipients = ["user A","user B","user E"]

上述数据表示:用户A选择了组1和组3,用户B选择了组1、2、3。

创建图片时会指定目标组(如组1+组2),需实现:

  • 仅属于目标组的用户可查看图片
  • 同一用户即使属于多个目标组,也仅显示1张图片,无重复

现有代码缺陷

当前逻辑仅会获取第一个匹配组的受众,无法合并所有目标组的用户。例如当图片目标为全部3组时,仅组2或组3的用户无法看到图片,因为循环找到第一个匹配组(组1)后就终止,未处理后续组。

问题代码:

$groups = ["1", "2", "3"];
$match = false;

foreach ($groups as $g) {
    if (in_array($g, $groups)) {
        $match = true;
        break;
    }
}

if(true===$match)
{
  if($g == "1"){
    $audience = $group1_recipients;           
  }
    else if($g == "2"){
    $audience = $group2_recipients;  
  }
    else if($g == "3"){
    $audience = $group3_recipients; 
  }
}
else
{
  echo "No matching audience type";
}

修复方案

核心思路是合并所有目标组的用户并去重,具体实现如下:

// 替换为图片实际指定的目标组,比如["1","2"]或["1","2","3"]
$target_groups = ["1", "2", "3"];
$audience = [];

// 遍历目标组,合并对应组的用户数组
foreach ($target_groups as $g) {
    switch($g) {
        case "1":
            $audience = array_merge($audience, $group1_recipients);
            break;
        case "2":
            $audience = array_merge($audience, $group2_recipients);
            break;
        case "3":
            $audience = array_merge($audience, $group3_recipients);
            break;
        default:
            // 忽略无效组
            break;
    }
}

// 去重,确保同一用户仅出现一次
$audience = array_unique($audience);

// 判断是否有匹配受众
if(empty($audience)) {
    echo "No matching audience type";
} else {
    // 此处添加图片显示逻辑,示例:检查当前登录用户是否在受众列表中
    // if(in_array($current_logged_user, $audience)) { 显示图片 }
}

关键说明

  • $target_groups需替换为图片实际的目标组参数,而非固定值
  • array_merge()用于合并多个组的用户数组
  • array_unique()实现去重,避免同一用户重复出现在受众列表中
  • 最终可通过检查当前登录用户是否在$audience数组内,控制图片的显示/隐藏

内容的提问来源于stack exchange,提问作者Rick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:54:27