用逗号将结果值与 foreach 分开

separate resulting values from a foreach with commas

我在同一个元键中使用 add_user_meta 保存值。

我需要的是在使用 foreach 获取它们时用逗号分隔它们,以便我可以通过 wp_mail.

发送它们

我需要这样的东西:


1@gmail.com, 2@hotmail.com, 3@gmail.com

但是当直接获取它们时,它returns把它们粘在一起。

有帮助吗?


$email = get_user_meta ($vendor_id, 'list_email', false);

foreach ($email as $emails) {
    echo $emails;
}

结果:


1@gmail.com2@hotmail.com3@gmail.com

我尝试了一些选项,但前面的逗号必须来自第二封电子邮件才能在 wp_mail 中读取,我不知道该怎么做

您只需在循环中附加“,”,然后使用 PHP rtrim() 函数删除最后一个“,”。 此代码将执行您想要的操作:

$email = ['1@gmail.com', '2@gmail.com', '3@gmail.com', '4@gmail.com'];
$output = '';
foreach ( $email as $emails ) {
  $output .= $emails . ', ';
}
$output = rtrim( $output, ', ' );
echo $output;

输出:

1@gmail.com, 2@gmail.com, 3@gmail.com, 4@gmail.com 

编辑: 感谢 Vee 提及,有更简单的解决方案,即使用 implode() 函数,如下所示:

$email = ['1@gmail.com', '2@gmail.com', '3@gmail.com', '4@gmail.com'];
$output = implode(', ', $email);
echo $output;

结果:

1@gmail.com, 2@gmail.com, 3@gmail.com, 4@gmail.com

提示:始终尝试为您的变量使用适当的名称,在这里您应该使用 $emails 用于电子邮件数组,$email 用于单个电子邮件项目。

如果电子邮件是这样排列的。

$emails = ['n1@email.tld', 'n2@email.tld', 'n3@email.tld'];

使用array_key_last().

if (! function_exists("array_key_last")) {
    /**
     * Get last array key for PHP version older than 7.3.
     *
     * @link https://www.php.net/manual/en/function.array-key-last.php#123016
     * @param array $array
     * @return int|string|null
     */
    function array_key_last($array) {
        if (!is_array($array) || empty($array)) {
            return NULL;
        }
       
        return array_keys($array)[count($array)-1];
    }
}
foreach ($emails as $index => $email) {
    echo $email;
    if (array_key_last($emails) !== $index) {
        echo ', ';
    }
}

使用implode().

echo implode(', ', $emails);

所有这些结果:

n1@email.tld, n2@email.tld, n3@email.tld