phpwordpresswp-mail

separate resulting values from a foreach with commas


I am saving values with add_user_meta within the same meta key.

What I need is to separate them with commas when getting them with foreach so I can send them by wp_mail.

I need something like this:


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

but when obtaining them directly, it returns them all together and glued.

some help?


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

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

Result:


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

I tried some options, but the comma in front must be from the second email to be readable in wp_mail and I don't understand how to do it


Solution

  • You just need to append the "," in your loop and then remove the last "," using PHP rtrim() function. This code will do what you want:

    $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;
    

    The output:

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

    Edit: Thanks Vee for mentioning, there is way simpler solution for this that is Using implode() function, like this:

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

    Result:

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

    Tip: Always try to use proper names for your variables, here you should use $emails for the array of emails and $email for the single email item.