如果不存在,PHP将从字符串中删除','

use*_*234 0 php

我正在运行此代码:

$stmt = $pdo_conn->prepare("SELECT * from admin where support_emails = :support_emails and logged = :logged and disabled = :disabled ");
        $stmt->execute(array(':support_emails' => 'Y', ':logged' => 'in', ':disabled' => ''));
        $records = $stmt->fetchAll(PDO::FETCH_ASSOC);
        if(count($records) > 0) {
            foreach($records as $records2) {
                if(filter_var($records2["email"], FILTER_VALIDATE_EMAIL)) {
                    $SupportEmailList = $records2["email"].', '.$SupportEmailList;
                }
                if(!empty($SupportEmailList)) {
                    $SupportEmailList = substr($SupportEmailList, 0, -2); // removes last 2 characters (`, `) from end of string
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

返回

email1@domain1.com, email2@domain2.com
Run Code Online (Sandbox Code Playgroud)

当我在SQL中运行时

我已经添加了:

if(!empty($SupportEmailList)) {
                    $SupportEmailList = substr($SupportEmailList, 0, -2); // removes last 2 characters (`, `) from end of string
                }
Run Code Online (Sandbox Code Playgroud)

', '如果最后一个结果不存在,则从字符串的末尾删除,但它似乎在创建以下内容:

email1@domain1.com, email2@domain2.c
Run Code Online (Sandbox Code Playgroud)

而不是:

email1@domain1.com, email2@domain2.com
Run Code Online (Sandbox Code Playgroud)

raj*_*raj 6

我建议将结果保存在一个数组中,并使用implode(或join)将它们与逗号连接起来.

这样您就不必处理尾随逗号问题了.

$email_address = array();

foreach($records as $records2) {
    if(filter_var($records2["email"], FILTER_VALIDATE_EMAIL)) {
        array_push($email_address, $records2["email"]);
    }
}

$comma_separated_email_address = implode(",", $email_address);

echo $comma_separated_email_address ;
Run Code Online (Sandbox Code Playgroud)