如何将foreach遍历get_user_meta返回的邮箱值用逗号分隔适配wp_mail
最优实现方案(无需手动遍历)
你不需要自己写foreach处理拼接,PHP内置的implode()函数可以直接把数组元素按指定分隔符拼接成字符串,完全符合你的需求:
// 读取邮箱数组 $email_array = get_user_meta($vendor_id, 'list_email', false); // 直接用逗号+空格拼接成字符串 $email_str = implode(', ', $email_array); // 输出测试:1@gmail.com, 2@hotmail.com, 3@gmail.com echo $email_str; // 直接传给wp_mail即可 wp_mail($email_str, '邮件标题', '邮件内容');
手动foreach实现方式(适合需要自定义逻辑的场景)
如果要自己实现「从第二个元素开始前面加逗号」的逻辑,提供两种可直接用的写法:
方式1:计数器判断
$email_array = get_user_meta($vendor_id, 'list_email', false); $email_str = ''; $count = 0; foreach ($email_array as $em) { // 第一个元素前面不加逗号,从第二个开始前面加逗号和空格 if ($count > 0) { $email_str .= ', '; } $email_str .= $em; $count++; } echo $email_str;
方式2:判断字符串是否为空
$email_array = get_user_meta($vendor_id, 'list_email', false); $email_str = ''; foreach ($email_array as $em) { // 拼接前判断结果是不是空,空的话直接加,否则前面补逗号 $email_str .= $email_str === '' ? $em : ', ' . $em; } echo $email_str;
额外提示
wp_mail函数的收件人参数本身就支持直接传入邮箱数组,如果你没有其他特殊需求,完全可以不用拼接成字符串,直接传读取到的数组即可:
$email_array = get_user_meta($vendor_id, 'list_email', false); wp_mail($email_array, '邮件标题', '邮件内容');
内容的提问来源于stack exchange,提问作者mario
相关产品推荐
相关产品推荐

