php array - 为每个唯一的电子邮件地址发送一封电子邮件,将数据分组在一起

标签 php mysql arrays email

我在数组中有无限数量的项目:

$query = mysql_query("SELECT * FROM orders WHERE orderID = '$orderID'");        

while($row = mysql_fetch_array($query)){
   $items[] = $row[itemnumber];
   $quantity[] = $row[quantity];
   $vendoremail[] = $row[vendoremail];
} 

数组中的值可能是这样的:

 $items = ("A","B", "C");
    $quantity = ("2", "1", "3");
    $vendoremail = ("name1@email.com", "name2@email.com", "name1@email.com");

我想对来自相同电子邮件地址的数据进行分组,并向每个地址发送一封电子邮件。

因此一封电子邮件被发送到 name1@email.com,邮件正文中包含项目“A”和“C”以及数量“2”和“3”。

另一封电子邮件被发送到 name2@email.com,邮件正文中包含项目“B”和数量“1”。

有人知道完成此任务的最佳方法吗?

最佳答案

您可以通过 GROUP_CONCAT() 将值分组为逗号分隔的字符串,并可选择在 PHP 中拆分它们:

SELECT 
  GROUP_CONCAT(itemnumber) AS items,
  GROUP_CONCAT(quantity) AS quantities,
  vendoremail
FROM orders
WHERE orderid = '$orderID'
GROUP BY vendoremail

这将产生如下结果:

name1@email.com    A,C    2,3
name2@email.com    B      1

在 PHP 中,如果需要,您可以explode() 将列表返回到数组中以显示在电子邮件正文中。

$results = array();
while($row = mysql_fetch_array($query)){
   $results[] = $row; 
}
foreach ($results as $result) {
  $email = $result['vendoremail'];
  $items = explode(",", $result['items']); // now it's an array...
  $quantities = explode(",", $result['quantities']);  // now it's an array...
}

关于php array - 为每个唯一的电子邮件地址发送一封电子邮件,将数据分组在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082112/

相关文章:

mysql - SQL SELECT MIN 值与 WHERE 语句

javascript - 如何获取数组中所有出现的相同值的索引?

PHP/SOAP : How can UserCredentials be passed to SOAP request?

PHP - 使用当前 key 随机

php - Facebook API : IP Address blocking of Heroku servers

php - 我可以有一个空的 else php

php - PDO::prepare() 如何生成 PDOStatement 对象?

php - 如何管理分类站点中的多个城市?

java - java中的旋转字符串数组

ruby - 在ruby中合并2个数组