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

如何在匹配评论者邮箱时从配置数组输出对应作者角色?

解决评论者邮箱匹配后输出对应角色的问题

你的现有代码存在几个逻辑错误,导致无法正确匹配邮箱并输出对应角色,以下是修正方案:

原代码的问题

  • 变量混淆:第二层循环里,$author才是邮箱字符串,$email是包含role的数组,原判断$email === $match_email是拿数组和字符串对比,永远不会成立
  • have_comments()的位置错误:这个函数应该在循环前判断是否有评论,而非放在循环内的条件里重复判断
  • 循环层级冗余:不需要遍历整个$config数组,直接取verified_email组即可

修正后的完整代码

// 获取评论及评论者邮箱
$comment = get_comment();
$match_email = $comment->comment_author_email;

// 配置数组
$config = [
    'verified_email' => [
        'sakshikr652@gmail.com' => [
            'role' => 'Seo Expert',
        ],
        'sabhitra628@gmail.com' => [
            'role' => 'Manager',
        ]
    ]
];

// 先判断是否有评论且邮箱不为空
if (have_comments() && !empty($match_email)) {
    // 直接获取已验证邮箱组
    $verified_users = $config['verified_email'];
    // 检查当前邮箱是否在配置中
    if (isset($verified_users[$match_email])) {
        // 输出对应角色
        echo $verified_users[$match_email]['role'];
    }
}

代码说明

  1. 先通过have_comments()确认有评论,同时确保$match_email不为空,避免无效判断
  2. 直接提取$config里的verified_email用户组,省去多余的循环层级
  3. 用isset()快速判断当前邮箱是否在配置数组中,存在则直接输出对应的role

如果后续需要扩展多个用户组,也可以用循环实现,修正后的循环代码如下:

if (have_comments() && !empty($match_email)) {
    foreach ($config as $group => $users) {
        // 检查当前用户组中是否存在匹配的邮箱
        if (isset($users[$match_email])) {
            echo $users[$match_email]['role'];
            break; // 找到匹配后退出循环,提升效率
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:27:16