微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我在数组中有不确定数量的项目:

$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...
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐