将字符串变量插入数组
Insert a Variable of String into an array
我在我的 PHP 项目中使用 Sendinblue SMTP,我想将事务性电子邮件发送到动态电子邮件列表,问题是我在使用变量时出现语法错误而是一个字符串。例如,这段代码效果很好:
include 'Mailin.php';
$mailin = new Mailin('senders@sender.com', 'key');
$mailin->
addTo(
array(
'email1@email.com' => '', 'email2@email.com' => '', 'email3@email.com' => ''
)
)->
setFrom('sender@sender.com', 'Test')->
setReplyTo('sender@sender.com', 'Test')->
setSubject('Example')->
setText('Test')->
setHtml($htmlContent);
$res = $mailin->send();
print_r($res);
但是如果我使用变量而不是 "addTo Array" 中的字符串,它会显示语法错误,例如:
$customers = '';
foreach ($clientes as $customer) {
for ($i=1; $i < 41; $i++) {
if ($customer['email'.$i] != "" or $customer['email'.$i] != NULL) {
$customers .= "'".$customer['email'.$i]. "' => '', " ; //for each customer's email add the email in " 'email@email.com' => '', " format
}
}
}
$customers = substr($customers, 0, -2); //removes last space and comma of the String
include 'Mailin.php';
$mailin = new Mailin('senders@sender.com', 'key');
$mailin->
addTo(
array(
$customers
)
)->
setFrom('sender@sender.com', 'Test')->
setReplyTo('sender@sender.com', 'Test')->
setSubject('Example')->
setText('Test')->
setHtml($htmlContent);
$res = $mailin->send();
print_r($res);
如果我使用 Print_r($customers) 函数,它会显示我在第一个示例中使用的确切字符串,即使我使用代码:
$text = "'email1@email.com' => '', 'email2@email.com' => '', 'email3@email.com' => ''";
if ($customers == $text) {
print_r("Yes");
}else{
print_r("No");
}
结果是"Yes",但是当我使用
中的变量时
addTo(
array(
$customers
)
)->
显示错误,但如果我直接使用字符串,则会发送电子邮件
addTo(
array(
'email1@email.com' => '', 'email2@email.com' => '', 'email3@email.com' => ''
)
)->
而且我不知道为什么如果 $customers 变量具有所需的字符串,它会显示错误。
你知道如何将变量用于我需要发送的电子邮件吗?
您不会通过将字符串与 =>
连接起来来构建数组。要在关联数组中创建元素,只需分配给该数组索引即可。
$customers = [];
foreach ($customers as $customer) {
for ($i = 1; $i < 41; $i++) {
if (!empty($customer["email" . $i])) {
$customers[$customer["email" . $i]] = "";
}
}
}
include 'Mailin.php';
$mailin = new Mailin('senders@sender.com', 'key');
$mailin->
addTo($customers)->
...
此外,请参阅 Why non-equality check of one variable against many values always returns true? 了解为什么在跳过空电子邮件时应该使用 &&
而不是 ||
(我已使用 !empty()
简化了这一点) ).
我在我的 PHP 项目中使用 Sendinblue SMTP,我想将事务性电子邮件发送到动态电子邮件列表,问题是我在使用变量时出现语法错误而是一个字符串。例如,这段代码效果很好:
include 'Mailin.php';
$mailin = new Mailin('senders@sender.com', 'key');
$mailin->
addTo(
array(
'email1@email.com' => '', 'email2@email.com' => '', 'email3@email.com' => ''
)
)->
setFrom('sender@sender.com', 'Test')->
setReplyTo('sender@sender.com', 'Test')->
setSubject('Example')->
setText('Test')->
setHtml($htmlContent);
$res = $mailin->send();
print_r($res);
但是如果我使用变量而不是 "addTo Array" 中的字符串,它会显示语法错误,例如:
$customers = '';
foreach ($clientes as $customer) {
for ($i=1; $i < 41; $i++) {
if ($customer['email'.$i] != "" or $customer['email'.$i] != NULL) {
$customers .= "'".$customer['email'.$i]. "' => '', " ; //for each customer's email add the email in " 'email@email.com' => '', " format
}
}
}
$customers = substr($customers, 0, -2); //removes last space and comma of the String
include 'Mailin.php';
$mailin = new Mailin('senders@sender.com', 'key');
$mailin->
addTo(
array(
$customers
)
)->
setFrom('sender@sender.com', 'Test')->
setReplyTo('sender@sender.com', 'Test')->
setSubject('Example')->
setText('Test')->
setHtml($htmlContent);
$res = $mailin->send();
print_r($res);
如果我使用 Print_r($customers) 函数,它会显示我在第一个示例中使用的确切字符串,即使我使用代码:
$text = "'email1@email.com' => '', 'email2@email.com' => '', 'email3@email.com' => ''";
if ($customers == $text) {
print_r("Yes");
}else{
print_r("No");
}
结果是"Yes",但是当我使用
中的变量时 addTo(
array(
$customers
)
)->
显示错误,但如果我直接使用字符串,则会发送电子邮件
addTo(
array(
'email1@email.com' => '', 'email2@email.com' => '', 'email3@email.com' => ''
)
)->
而且我不知道为什么如果 $customers 变量具有所需的字符串,它会显示错误。
你知道如何将变量用于我需要发送的电子邮件吗?
您不会通过将字符串与 =>
连接起来来构建数组。要在关联数组中创建元素,只需分配给该数组索引即可。
$customers = [];
foreach ($customers as $customer) {
for ($i = 1; $i < 41; $i++) {
if (!empty($customer["email" . $i])) {
$customers[$customer["email" . $i]] = "";
}
}
}
include 'Mailin.php';
$mailin = new Mailin('senders@sender.com', 'key');
$mailin->
addTo($customers)->
...
此外,请参阅 Why non-equality check of one variable against many values always returns true? 了解为什么在跳过空电子邮件时应该使用 &&
而不是 ||
(我已使用 !empty()
简化了这一点) ).