【发布时间】: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()。