用逗号将结果值与 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
我在同一个元键中使用 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