【问题标题】:Turn a array into a variable for send in PHPMailer将数组转换为变量以在 PHPMailer 中发送
【发布时间】:2018-01-15 02:35:00
【问题描述】:

我试图将具有另一个数组的数组从 SQL 选择转换为唯一变量以通过 PHPMailer 将其发送给用户,我试图将数组放在 PHPMailer 的变量上所以没有工作,这就是我尝试这种方式的原因看起来有点难

public static function getUsersByEmail($email) {
    $sql = DB::prepare(
        "SELECT username FROM users WHERE email=:email ORDER BY id LIMIT 10"
    );
    $sql->bindParam('email', $email);
    $sql->execute();
    $accounts = $sql->fetchAll(PDO::FETCH_ASSOC);
    return $accounts; // its array
}

public function recoverUsername($email) {
    if (User::emailHasAccounts($email) == true) {    
        $accounts = [User::getUsersByEmail($email)];               
        $str = implode(",", $accounts); // imploding array   

        $mail = new Mail([
            'email' => $email,
            'subject' => SITENAME,
            'template' => 'accountslist',
            'variables' => json_encode([
                'email' => $email, 
                'accountList' => $str, 
                'date' => date('d/m/y h:i')
            ]),
            'time' => time(),
            'next_attemp' => time(),
            'attemps' => 0,
            'status' => 0
        ]);

        // $mail->dbInsert();
        return true;
    } else {
        echo "erro";
        return false;
    }
}

【问题讨论】:

  • 检查print_r($accounts)——它将是一个二维数组,如array(array('username' = "name1"), array('username' => "name2"))。您只需要从子数组中提取username,也许array_column($accounts, 'username') 可以与implode() 一起使用。
  • 问题是我用的是5.4,数组列只有5.5,对吧?
  • 好吧,如果你不能使用array_column(),那么你需要一个循环。 foreach ($accounts as $a) { $usernames[] = $a['username']; },您可以安全地将$username 传递给implode()。

标签: php sql arrays pdo


【解决方案1】:

解决方案(适用于 PHP 5.5

$accounts = getAccounts();
$rr = array_column($accounts, 'username');
$array = implode(',', $accounts);

$getaccounts = array_map(function ($accounts) {
    return $accounts['username'];
}, $accounts);

$var = implode('<br>', $getaccounts);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多